java二叉树转换为链表_leetcode刷题笔记-114. 二叉树展开为链表(java实现)
leetcode刷題筆記-114. 二叉樹展開為鏈表(java實現)
題目描述
給你二叉樹的根結點 root ,請你將它展開為一個單鏈表:
展開后的單鏈表應該同樣使用 TreeNode ,其中 right 子指針指向鏈表中下一個結點,而左子指針始終為 null 。
展開后的單鏈表應該與二叉樹 先序遍歷 順序相同。
示例 1:
?
輸入:root = [1,2,5,3,4,null,6]
輸出:[1,null,2,null,3,null,4,null,5,null,6]
示例 2:
輸入:root = []
輸出:[]
示例 3:
輸入:root = [0]
輸出:[0]
提示:
樹中結點數在范圍 [0, 2000] 內
-100 = Node.val = 100
來源:力扣(LeetCode)鏈接:https://leetcode-cn.com/problems/flatten-binary-tree-to-linked-list
解題思路
1)把左子樹和右子樹拉平
2)左子樹放到右子樹位置,然后把右子樹放到左子樹下方
參考來源:https://labuladong.gitbook.io/algo/shu-ju-jie-gou-xi-lie/shou-ba-shou-shua-er-cha-shu-xun-lian-di-gui-si-wei/er-cha-shu-xi-lie-1
解題代碼
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode() {}
* TreeNode(int val) { this.val = val; }
* TreeNode(int val, TreeNode left, TreeNode right) {
* this.val = val;
* this.left = left;
* this.right = right;
* }
* }
*/
class Solution {
public void flatten(TreeNode root) {
if(root == null) {
return;
}
flatten(root.left);
flatten(root.right);
//左右子樹拉成平鏈
TreeNode left = root.left;
TreeNode right = root.right;
root.left = null;
root.right = left;
//把右子樹掛在調整的鏈后邊
TreeNode p = root;
while(p.right != null) {
p = p.right;
}
p.right = right;
}
}
點擊并拖拽以移動
leetcode刷題筆記-114. 二叉樹展開為鏈表(java實現) 相關文章
leetcode刷題筆記-116. 填充每個節點的下一個右側節點指針(java實現)
題目描述 給定一個完美二叉樹,其所有葉子節點都在同一層,每個父節點都有兩個子節點。二叉樹定義如下: struct Node { int val; Node *left; Node *right; Node *next; } 填充它的每個 next 指針,讓這個指針指向其下一個右側節點。如果找不到下一個右側節
leetcode刷題筆記-226. 翻轉二叉樹(java實現)
題目描述 翻轉一棵二叉樹。 示例: 輸入: 4 / \ 2 7 / \ / \ 1 3 6 9 輸出: 4 / \ 7 2 / \ / \ 9 6 3 1 來源:力扣(LeetCode)鏈接:https://leetcode-cn.com/problems/invert-binary-tree 解題思路 經過觀察,把二叉樹的左右子節點進行交換,所有子節點
吳裕雄--天生自然 Zookeeper學習筆記--Zookeeper 節點特性
介紹一下 zookeeper 的節點特性和簡單使用場景,正是由于這些節點特性的存在使 zookeeper 開發出不同的場景應用。 1、同一級節點 key 名稱是唯一的實例:$ ls /$ create /runoob 2 2、創建節點時,必須要帶上全路徑實例:$ ls /runoob$ create /runoob/child
吳裕雄--天生自然 Zookeeper學習筆記--Zookeeper 四字命令
zookeeper 支持某些特定的四字命令與其交互,用戶獲取 zookeeper 服務的當前狀態及相關信息,用戶在客戶端可以通過 telenet 或者 nc(netcat) 向 zookeeper 提交相應的命令。安裝 nc 命令:$ yum install nc # centos或$ sudo apt install netcat # ubuntu
吳裕雄--天生自然 Zookeeper學習筆記--Zookeeper Java 客戶端搭建
使用的 IDE 為 IntelliJ IDEA,創建一個 maven 工程,命名為 zookeeper-demo,并且引入如下依賴,可以自行在maven中央倉庫選擇合適的版本,介紹原生 API 和 Curator 兩種方式。 dependency groupIdjunit/groupId artifactIdjunit/artifactId version4.11/ver
吳裕雄--天生自然 Zookeeper學習筆記--ZooKeeper 數據模型 znode 結構詳解
數據模型在 zookeeper 中,可以說 zookeeper 中的所有存儲的數據是由 znode 組成的,節點也稱為 znode,并以 key/value 形式存儲數據。整體結構類似于 linux 文件系統的模式以樹形結構存儲。其中根路徑以 / 開頭。進入 zookeeper 安裝的 bin 目錄,通過sh zk
吳裕雄--天生自然 Zookeeper學習筆記--Zookeeper 安裝配置
Linux 安裝zookeeper 下載地址為: https://zookeeper.apache.org/releases.html。 打開網址 https://www.apache.org/dyn/closer.lua/zookeeper/zookeeper-3.4.14/zookeeper-3.4.14.tar.gz,看到如下界面: 選擇一個下載地址,使用 wget 命令下載并安裝:$ wg
redis6.0.5之zset閱讀筆記4--壓縮列表(ziplist)排序集相關API
***********************************************************************************************獲取壓縮鏈表中節點的數值double zzlGetScore(unsigned char *sptr) { unsigned char *vstr; unsigned int vlen; long long vlong; char buf[128]; double
吳裕雄--天生自然 Zookeeper學習筆記--Zookeeper linux 服務端集群搭建步驟
所需準備工作,創建三臺虛擬機環境并安裝好 java 開發工具包 JDK,可以使用 VM 或者 vagrant+virtualbox 搭建 centos/ubuntu 環境,本案例基于宿主機 windows10 系統同時使用 vagrant+virtualbox 搭建的 centos7 環境,如果直接使用云服務器或者物理機同理。
算法刷題及總結_數組篇
二分法 //算法總結//第一部分:數組相關/***Leetcode題目35:搜索插入位置*給定一個排序數組和一個目標值,在數組中找到目標值,并返回其索引。如果目標值不存在于數組中,返回它將會被按順序插入的位置。*示例 1:*輸入: [1,3,5,6], 5*輸出: 2**示例 2:*輸入
總結
以上是生活随笔為你收集整理的java二叉树转换为链表_leetcode刷题笔记-114. 二叉树展开为链表(java实现)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql按日期获取最新_mysql获取
- 下一篇: 评中级工程师职称计算机,评中级工程师职称