leetcode117. 填充每个节点的下一个右侧节点指针 II
生活随笔
收集整理的這篇文章主要介紹了
leetcode117. 填充每个节点的下一个右侧节点指针 II
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
給定一個二叉樹
struct Node {
? int val;
? Node *left;
? Node *right;
? Node *next;
}
填充它的每個 next 指針,讓這個指針指向其下一個右側節點。如果找不到下一個右側節點,則將 next 指針設置為 NULL。
初始狀態下,所有?next 指針都被設置為 NULL。
?
進階:
你只能使用常量級額外空間。
使用遞歸解題也符合要求,本題中遞歸程序占用的棧空間不算做額外的空間復雜度。
?
示例:
輸入:root = [1,2,3,4,5,null,7]
輸出:[1,#,2,3,#,4,5,7,#]
解釋:給定二叉樹如圖 A 所示,你的函數應該填充它的每個 next 指針,以指向其下一個右側節點,如圖 B 所示。
?
提示:
樹中的節點數小于 6000
-100?<= node.val <= 100
思路:層序遍歷改一下,把同一層的連一下即可。
/* // Definition for a Node. class Node {public int val;public Node left;public Node right;public Node next;public Node() {}public Node(int _val) {val = _val;}public Node(int _val, Node _left, Node _right, Node _next) {val = _val;left = _left;right = _right;next = _next;} }; */ class Solution {public Node connect(Node root) {if (root == null) {return null;}Queue<Node> Q = new LinkedList<Node>(); Q.add(root);while (Q.size() > 0) {int size = Q.size();for(int i = 0; i < size; i++) {Node node = Q.poll();if (i < size - 1) {node.next = Q.peek();}if (node.left != null) {Q.add(node.left);}if (node.right != null) {Q.add(node.right);}}}return root;} }?
總結
以上是生活随笔為你收集整理的leetcode117. 填充每个节点的下一个右侧节点指针 II的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux实验四:编译和调试工具的使用
- 下一篇: leetcode543. 二叉树的直径