有个节点开始递归遍历每个节点。 由于是完美的二叉树,因而有左子结点必有右子结点且子树都是等高的。 对每个节点的左子结点和右子结点分别处理。 左子结点的next就是右子结点;有子节点的next应当是当前节点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) {
fun(root);
}
void fun( TreeLinkNode r )
{
if( r==null )
{
return ;
}
if( r.left==null )
{
return ;
}
r.left.next=r.right;
if( r.next!=null )
{
r.right.next=r.next.left;
}
fun(r.left);
fun(r.right);
return ;
}
}