做跳转链接到自己的网站,全能优化大师,wordpress gif动画,网站怎么在移动端推广116. 填充每个节点的下一个右侧节点指针
难度中等128
给定一个完美二叉树#xff0c;其所有叶子节点都在同一层#xff0c;每个父节点都有两个子节点。二叉树定义如下#xff1a;
struct Node {int val;Node *left;Node *right;Node *next;
}
填充它的每个 next 指针其所有叶子节点都在同一层每个父节点都有两个子节点。二叉树定义如下
struct Node {int val;Node *left;Node *right;Node *next;
}
填充它的每个 next 指针让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点则将 next 指针设置为 NULL。
初始状态下所有 next 指针都被设置为 NULL。 示例 输入{$id:1,left:{$id:2,left:{$id:3,left:null,next:null,right:null,val:4},next:null,right:{$id:4,left:null,next:null,right:null,val:5},val:2},next:null,right:{$id:5,left:{$id:6,left:null,next:null,right:null,val:6},next:null,right:{$id:7,left:null,next:null,right:null,val:7},val:3},val:1}输出{$id:1,left:{$id:2,left:{$id:3,left:null,next:{$id:4,left:null,next:{$id:5,left:null,next:{$id:6,left:null,next:null,right:null,val:7},right:null,val:6},right:null,val:5},right:null,val:4},next:{$id:7,left:{$ref:5},next:null,right:{$ref:6},val:3},right:{$ref:4},val:2},next:null,right:{$ref:7},val:1}解释给定二叉树如图 A 所示你的函数应该填充它的每个 next 指针以指向其下一个右侧节点如图 B 所示。提示
你只能使用常量级额外空间。使用递归解题也符合要求本题中递归程序占用的栈空间不算做额外的空间复杂度。
思路层序遍历稍微改一下把相同层的连一下即可。
/*
// 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;}QueueNode Q new LinkedListNode(); 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;}
}