标签:
The problem:
Given a binary tree
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:
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
First solution : <O(n) space complexity>
public class Solution { public void connect(TreeLinkNode root) { if (root == null) return; Queue<TreeLinkNode> queue = new LinkedList<TreeLinkNode> (); TreeLinkNode cur_node; int cur_num = 1; int next_num = 0; queue.offer(root); while (queue.size() != 0) { cur_node = queue.poll(); cur_num--; if (cur_node.left != null) { queue.offer(cur_node.left); next_num++; } if (cur_node.right != null) { queue.offer(cur_node.right); next_num++; } if (cur_num != 0) { cur_node.next = queue.peek(); } else{ cur_node.next = null; cur_num = next_num; next_num = 0; } } } }
[LeetCode#]Populating Next Right Pointers in Each Node
标签:
原文地址:http://www.cnblogs.com/airwindow/p/4235825.html