标签:
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
思路:用两个TreeLinkNode:node和across。其中node用来纵向扫,across用来横向扫(利用有next节点的特性)
/**
* 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)
{
TreeLinkNode node = root;
while(node != null)
{
TreeLinkNode across = node;
while(across != null)
{
if(across.left != null)
{
across.left.next = across.right;
}
if(across.right !=null && across.next != null)
{
across.right.next = across.next.left;
}
across = across.next;
}
node = node.left;
}
}
}
reference:https://leetcode.com/discuss/1808/may-only-constant-extra-space-does-mean-cannot-use-recursion
Populating Next Right Pointers in Each Node
标签:
原文地址:http://www.cnblogs.com/hygeia/p/5100907.html