【Leetcode】Populating Next Right Pointers in Each Node in JAVA
2014-11-15 00:18
453 查看
Given a binary tree
Populate each next pointer to point to its next right node. If there is no next right node, the next pointer should be set to
Initially, all next pointers are set to
Note:
You may only use constant extra space.
You may assume that it is a perfect binary tree (ie, all leaves are at the same level, and every parent has two children).
For example,
Given the following perfect binary tree,
After calling your function, the tree should look like:
这道题其实就是分清楚next指的对象,然后递归调用就好了~~~
不要用1,2,3来想,用4和5来作为对象来想如何调用安排:
大家想想我注释掉的部分为什么不对?
struct TreeLinkNode { TreeLinkNode *left; TreeLinkNode *right; TreeLinkNode *next; }
Populate each next pointer to point to its next right node. If there is no next right node, the next pointer should be set to
NULL.
Initially, all next pointers are set to
NULL.
Note:
You may only use constant extra space.
You may assume that it is a perfect binary tree (ie, all leaves are at the same level, and every parent has two children).
For example,
Given the following perfect binary tree,
1 / \ 2 3 / \ / \ 4 5 6 7
After calling your function, the tree should look like:
1 -> NULL / \ 2 -> 3 -> NULL / \ / \ 4->5->6->7 -> NULL
这道题其实就是分清楚next指的对象,然后递归调用就好了~~~
不要用1,2,3来想,用4和5来作为对象来想如何调用安排:
public class PopNextRightPo { // struct TreeLinkNode { // TreeLinkNode *left; // TreeLinkNode *right; // TreeLinkNode *next; // } public void connect(TreeLinkNode root) { // if(root==null) return; // if(root.left!=null) root.left=root.right; // if(root.right!=null){ // if(root.next!=null) root.right.next=root.next.left; // } // connect(root.left);//递归调用 // connect(root.right);//递归调用 if(root == null){ return; } if(root.left != null){ root.left.next = root.right; } if(root.right != null){ root.right.next = root.next==null ? null : root.next.left; } connect(root.left); connect(root.right); } }
大家想想我注释掉的部分为什么不对?
相关文章推荐
- Populating Next Right Pointers in Each Node II leetcode java
- Java for LeetCode 117 Populating Next Right Pointers in Each Node II
- leetcode JAVA Populating Next Right Pointers in Each Node 难度系数3 3.41
- [LeetCode][Java] Populating Next Right Pointers in Each Node
- (Java) LeetCode 116. Populating Next Right Pointers in Each Node —— 填充同一层的兄弟节点
- 【LeetCode-面试算法经典-Java实现】【116-Populating Next Right Pointers in Each Node(二叉树链接右指针)】
- [Leetcode] Populating Next Right Pointers in Each Node II (Java)
- Java for LeetCode 116 Populating Next Right Pointers in Each Node
- leetcode:Populating Next Right Pointers in Each Node 【Java】
- 【Leetcode】:116. Populating Next Right Pointers in Each Node 问题 in JAVA
- [Leetcode] Populating Next Right Pointers in Each Node (Java)
- [LeetCode][Java] Populating Next Right Pointers in Each Node II
- leetcode-java-116. Populating Next Right Pointers in Each Node
- Populating Next Right Pointers in Each Node Python Java Leetcode
- 【leetcode】116. Populating Next Right Pointers in Each Node【java】
- Populating Next Right Pointers in Each Node leetcode java
- [Leetcode][JAVA] Populating Next Right Pointers in Each Node II
- leetcode:Populating Next Right Pointers in Each Node II 【Java】
- 【LeetCode-面试算法经典-Java实现】【117-Populating Next Right Pointers in Each Node(二叉树链接右指针II)】
- leetcode 79: Populating Next Right Pointers in Each Node II