給定乙個二叉樹,根節點為第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 由於至少要講每乙個節點都訪問一次...