Follow up for problem"Populating next right pointers in each node".
What if the given tree cocould be any binary tree? Wocould 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 shoshould look like:
1 -> NULL / 2 -> 3 -> NULL / \ 4-> 5 -> 7 -> NULL
Answer
/** * 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) { if(root==null) { return ; } TreeLinkNode firstUpper=root; TreeLinkNode pUpper; TreeLinkNode firstBelow=null; TreeLinkNode pBelow=null; while(firstUpper!=null) { pUpper=firstUpper; while(pUpper!=null) { if(pUpper.left!=null) { if(firstBelow==null) { firstBelow=pUpper.left; pBelow=firstBelow; } else { pBelow.next=pUpper.left; pBelow=pBelow.next; } } if(pUpper.right!=null) { if(firstBelow==null) { firstBelow=pUpper.right; pBelow=firstBelow; } else { pBelow.next=pUpper.right; pBelow=pBelow.next; } } pUpper=pUpper.next; } firstUpper=firstBelow; firstBelow=null; } }}
Populating next right pointers in each node II