給定乙個二叉樹,根節點為第1層,深度為 1。在其第 d 層追加一行值為 v 的節點。
新增規則:給定乙個深度值 d (正整數),針對深度為 d-1 層的每一非空節點 n,
為 n 建立兩個值為 v 的左子樹和右子樹。
將 n 原先的左子樹,連線為新節點 v 的左子樹;將 n 原先的右子樹,連線為新節點 v 的右子樹。
如果 d 的值為 1,深度 d - 1 不存在,則建立乙個新的根節點 v,原先的整棵樹將作為 v 的左子樹。
示例 1:輸入: 二叉樹如下所示:
2 63 1 5
v = 1
d = 2
輸出:
1 12 6
3 1 5
示例 2:輸入: 二叉樹如下所示:
2 3 1
v = 1
d = 3
輸出:
1 13 1
注意:輸入的深度值 d 的範圍是:[1,二叉樹最大深度 + 1]。
輸入的二叉樹至少有乙個節點。
1、層序遍歷;時間複雜度o(n),空間複雜度o(n)
2、遞迴;時間複雜度o(n),空間複雜度o(log(n))
func addonerow(root *treenode, v int, d int) *treenode }if d == 1 }dfs(root, v, d)return root}func dfs(root *treenode, v int, d int) if d == 2 root.right = &treenodereturn}dfs(root.left, v, d-1)dfs(root.right, v, d-1)}
medium題目,考察二叉樹,使用層序遍歷好理 二叉樹建立不跳出 236 二叉樹的最近公共祖先
面試題68 ii.二叉樹的最近公共祖先 給定乙個二叉樹,找到該樹中兩個指定節點的最近公共祖先。例如,給定如下二叉樹 root 3,5,1,6,2,0,8,null,null,7,4 輸入 root 3,5,1,6,2,0,8,null,null,7,4 p 5,q 1 輸出 3 解釋 節點 5 和節...
建立二叉樹 後序建立二叉樹
由後序遍歷可知,輸入順序是左結點 右結點 子樹根結點 比如輸入如下樹 ab cde 輸入序列為 e d b c a 思路 使用棧,對左結點和右結點進行壓棧 1.當輸入遇到非 且棧中元素大於等於2,則可以確定乙個小三角樹形,並將這個樹根作為下乙個小三角樹形的乙個子節點 2.當輸入遇到非 但棧中元素小於...
建立二叉樹
今天看到了乙個資料結構的筆試題目,他要求寫出建立二叉樹的程式。我想練習練習,所以想了一下其大致的思路,記錄如下 題目的要求很簡單,給出乙個字串序列 比如說a b d,e h j,k l,m n c f,g i 然後要求按照其規則建立二叉樹,題目不難但是卻花費了我不少的時間 第一步,我想到的是需要什麼...