首页 > 代码库 > [LeetCode] 117. Populating Next Right Pointers in Each Node II Java
[LeetCode] 117. Populating Next Right Pointers in Each Node II Java
题目:
Follow up for problem "Populating Next Right Pointers in Each Node".
What if the given tree could be any binary tree? Would your previous solution still work?
Note:
- You may only use constant extra space.
For example,
Given the following binary tree,
1
/ 2 3
/ \ 4 5 7
After calling your function, the tree should look like:
1 -> NULL
/ 2 -> 3 -> NULL
/ \ 4-> 5 -> 7 -> NULL
题意及分析:给出棵树,将树的每层用next指针链接起来。和上一题不同的是这里是一棵随意的二叉树。这里可以使用一个节点保存每一层的第一个节点,然后遍历该层就行。具体看代码注释。
代码:
/** * Definition for binary tree with next pointer. * public class TreeLinkNode { * int val; * TreeLinkNode left, right, next; * TreeLinkNode(int x) { val = x; } * } */ public class Solution { public void connect(TreeLinkNode root) { while(root!=null){ TreeLinkNode tempChild = new TreeLinkNode(0); //记录下一层的首节点 TreeLinkNode curChild = tempChild; while (root!=null){ //遍历某一层的节点,并将该层节点的子节点从左到右添加到下一层中去 if(root.left!=null){ curChild.next=root.left; curChild=curChild.next; } if(root.right!=null){ curChild.next=root.right; curChild=curChild.next; } root = root.next; } root = tempChild.next; //将下一层的首节点装载到root,遍历下一层 } } }
[LeetCode] 117. Populating Next Right Pointers in Each Node II Java
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。