leetcode623 在二叉樹中增加一行

2021-09-02 22:24:04 字數 1066 閱讀 4161

給定乙個二叉樹,根節點為第1層,深度為 1。在其第 d 層追加一行值為 v 的節點。

新增規則:給定乙個深度值 d (正整數),針對深度為 d-1 層的每一非空節點 n,為 n 建立兩個值為 v 的左子樹和右子樹。

將 n 原先的左子樹,連線為新節點 v 的左子樹;將 n 原先的右子樹,連線為新節點 v 的右子樹。

如果 d 的值為 1,深度 d - 1 不存在,則建立乙個新的根節點 v,原先的整棵樹將作為 v 的左子樹。

示例 1:

輸入: 

二叉樹如下所示:

4/   \

2     6

/ \   / 

3   1 5   

v = 1

d = 2

輸出: 

4/ \

1   1

/     \

2       6

/ \     / 

3   1   5   

示例 2:

輸入: 

二叉樹如下所示:

4/   

2    

/ \   

3   1    

v = 1

d = 3

輸出: 

4/   

2/ \    

1   1

/     \  

3       1

注意:輸入的深度值 d 的範圍是:[1,二叉樹最大深度 + 1]。

輸入的二叉樹至少有乙個節點。

思路:

利用bfs的思想 利用佇列儲存第d-1行的節點   再進行插入

if (d == 1) 

linkedlistqueue = new linkedlist<>();

queue.add(root);

for (int i = 0; i < d-2; i++)

}//此時佇列中儲存d-1行的節點

while (!queue.isempty())

return root;

二叉樹建立不跳出 leetcode623 go

給定乙個二叉樹,根節點為第1層,深度為 1。在其第 d 層追加一行值為 v 的節點。新增規則 給定乙個深度值 d 正整數 針對深度為 d 1 層的每一非空節點 n,為 n 建立兩個值為 v 的左子樹和右子樹。將 n 原先的左子樹,連線為新節點 v 的左子樹 將 n 原先的右子樹,連線為新節點 v 的...

leetcode 二叉樹 對稱二叉樹

給定乙個二叉樹,檢查它是否是映象對稱的。例如,二叉樹 1,2,2,3,4,4,3 是對稱的。1 2 2 3 4 4 3 但是下面這個 1,2,2,null,3,null,3 則不是映象對稱的 1 2 2 3 3 方法一 遞迴 思路 如果乙個樹的左子樹與右子樹映象對稱,則該樹是對稱的 兩個樹互為映象的...

LeetCode (二叉樹)反轉二叉樹

遞迴交換每乙個節點的左右子樹,重點在於訪問每乙個節點,然後交換左右子樹 definition for a binary tree node.struct treenode struct treenode inverttree struct treenode root 由於至少要講每乙個節點都訪問一次...