標籤:leetcode
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;}elsepre = parent.left;}if(parent.right != null){if(pre != null){pre.next = parent.right;pre = pre.next;}elsepre = parent.right;}parent = parent.next;}parent = next;}}