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原题链接:https://oj.leetcode.com/problems/populating-next-right-pointers-in-each-node-ii/
题目:前一题的继续。假设给定的是随意的二叉树。前题的代码还能用吗?
思路:显然,前一题不能用了。仅仅好用层序遍历。
public void connect(TreeLinkNode root) { if(root == null) return; TreeLinkNode parent = root,pre,next; while(parent != null){ pre = null; next = null; while(parent != null){ if(next == null) next = (parent.left == null) ? parent.right : parent.left; if(parent.left != null){ if(pre != null){ pre.next = parent.left; pre = pre.next; }else pre = parent.left; } if(parent.right != null){ if(pre != null){ pre.next = parent.right; pre = pre.next; }else pre = parent.right; } parent = parent.next; } parent = next; } }