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 7After calling your function, the tree should look like:
1 -> NULL / \ 2 -> 3 -> NULL / \ \ 4-> 5 -> 7 -> NULLSubscribe to see which companies asked this question.
Solution:
Tips:
recursion in from left to right, up to down.
Java Code:
/** * 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) { treeRecursion(root); } void listRecursion(TreeLinkNode root, TreeLinkNode[] lastNode){ if(null == root) { return; } listRecursion(root.next, lastNode); if(root.right != null){ root.right.next = lastNode[0]; lastNode[0] = root.right; } if(root.left != null){ root.left.next = lastNode[0]; lastNode[0] = root.left; } } void treeRecursion(TreeLinkNode root){ if(null == root) { return; } TreeLinkNode[] lastNode = {null}; listRecursion(root, lastNode); treeRecursion(lastNode[0]); } }