LeetCode 116. Populating Next Right Pointers in Each Node
阿新 • • 發佈:2022-04-09
LeetCode 116. Populating Next Right Pointers in Each Node (填充每個節點的下一個右側節點指標)
題目
連結
https://leetcode-cn.com/problems/populating-next-right-pointers-in-each-node/
問題描述
給定一個 完美二叉樹 ,其所有葉子節點都在同一層,每個父節點都有兩個子節點。二叉樹定義如下:
struct Node {
int val;
Node *left;
Node *right;
Node *next;
}
填充它的每個 next 指標,讓這個指標指向其下一個右側節點。如果找不到下一個右側節點,則將 next 指標設定為 NULL。
初始狀態下,所有 next 指標都被設定為 NULL。
示例
輸入:root = [1,2,3,4,5,6,7]
輸出:[1,#, 2,3,#,4,5,6,7,#]
提示
樹中節點的數量在 [0, 212 - 1] 範圍內
-1000 <= node.val <= 1000
思路
同樣是樹的基本操作,需要注意的就是next初始就是null,最右側不需要考慮。
複雜度分析
時間複雜度 O(n)
空間複雜度 O(n)
程式碼
Java
public Node connect(Node root) { if (root == null) { return null; } connectNode(root.left,root.right); return root; } public void connectNode(Node n1, Node n2) { if (n1 == null || n2 == null) { return; } n1.next = n2; connectNode(n1.left, n1.right); connectNode(n1.right, n2.left); connectNode(n2.left, n2.right); }