Populating Next Right Pointers in Each Node

public class PopulatingNextRightPointersinEachNode {

    /* * 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: * * You may only use constant extra space. You may assume that it is a * perfect binary tree (ie, all leaves are at the same level, and every * parent has two children). 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 * * Show Tags Tree */

    public class TreeLinkNode {
        int val;
        TreeLinkNode left, right, next;

        TreeLinkNode(int x) {
            val = x;
        }
    }

    /* * 对于一个节点A,让A的左子树指向A的右子树。 并让A的右子树,指向A的next的左子树。遍历每一个节点即可。深度优先 */
    public void connect(TreeLinkNode node) {
        if (node == null)
            return;
        if (node.left != null && node.right != null) {
            node.left.next = node.right;
            if (node.next != null) {
                node.right.next = node.next.left;
            }
        }
        connect(node.left);
        connect(node.right);

    }

    public static void main(String[] args) {
        // TODO Auto-generated method stub

    }

}

你可能感兴趣的:(Populating Next Right Pointers in Each Node)