leetcode Populating Next Right Pointers in Each Node II

来源:互联网 发布:2016淘宝永久封店解封 编辑:程序博客网 时间:2024/04/28 09:06

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
/** * 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) {        // Start typing your Java solution below        // DO NOT write main() function        if(root==null) return;        TreeLinkNode current=null,tmp=null;        while(root!=null){            if(root.left!=null){                if(tmp==null) tmp=root.left;                if(current==null) current=root.left;                else{                  current.next=root.left;                  current=root.left;                }            }            if(root.right!=null){                if(tmp==null) tmp=root.right;                if(current==null) current=root.right;                else{                  current.next=root.right;                  current=root.right;                                    }            }            root=root.next;        }        connect(tmp);    }}





原创粉丝点击