題目連結:
題目意譯:
給定一棵二元樹的根節點 root 以及兩整數 val 和 depth,將一列有著節點值 val 的節點新增在深度 depth。
注意到根節點的深度為 1。
增加節點的規則為:
給定一整數 depth,對於每個位於深度 depth - 1 的節點 cur,生成兩個數值為 val 的節點作為 cur 的左子樹根節點和右子樹根節點。
cur 原先的左子樹應為新的左子樹根節點之左子樹。
cur 原先的右子樹應為新的右子樹根節點之右子樹。
如果 depth == 1,代表著因為深度 depth - 1,則直接生成一個數值為 val 的節點作為原始的樹的新根節點,而原始的樹為新的根節點之左子樹。
限制:
樹中的節點數位於範圍 [1, 10 ^ 4] 之中。
樹的深度位於範圍 [1, 10 ^ 4] 之中。
-100 ≦ Node.val ≦ 100
-10 ^ 5 ≦ val ≦ 10 ^ 5
1 ≦ depth ≦ 樹的深度 + 1
範例測資:
範例 1:
輸入: root = [4,2,6,3,1,5], val = 1, depth = 2
輸出: [4,1,1,2,null,null,6,3,1,5]
範例 2:
輸入: root = [4,2,null,3,1], val = 1, depth = 3
輸出: [4,2,null,1,1,3,null,null,1]
解題思維:
基本上就是深度優先搜尋(Depth First Search,DFS)即可,跟找樹的最深深度一樣(如
這題)。只要到了目標深度新增對應的節點並根據題目的條件做出相應的操作即可。
此次分享到此為止,如有任何更加簡潔的想法或是有說明不清楚之地方,也煩請各位大大撥冗討論。