首页 > 其他 > 详细

[LeetCode]Populating Next Right Pointers in Each Node II

时间:2015-12-02 14:13:52      阅读:301      评论:0      收藏:0      [点我收藏+]
public class Solution {
    public void connect(TreeLinkNode root) {
        if (root == null) {
            return;
        }
        TreeLinkNode pre = root;
        TreeLinkNode next = find_next(pre);
        while (next != null) {
            TreeLinkNode tmp = next;
            while (pre != null) {
                if (tmp == pre.left) {
                    if (pre.right != null) {
                        tmp.next = pre.right;
                        tmp = tmp.next;
                        pre = pre.next;
                    } else {
                        pre = pre.next;
                    }
                } else {
                    if (pre.left != null) {
                        tmp.next = pre.left;
                        tmp = tmp.next;
                    } else if (pre.right != null && tmp != pre.right) {
                        tmp.next = pre.right;
                        pre = pre.next;
                        tmp = tmp.next;
                    } else {
                        pre = pre.next;
                    }
                }
            }
            pre = next;
            next = find_next(next);
        }
    }
    public TreeLinkNode find_next (TreeLinkNode pre) {
        if (pre.left != null) {
            return pre.left;
        } else if (pre.right != null) {
            return pre.right;
        } else if (pre.next != null) {
            return find_next(pre.next);
        } else {
            return null;
        }
    }
}

 

[LeetCode]Populating Next Right Pointers in Each Node II

原文:http://www.cnblogs.com/vision-love-programming/p/5012558.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!