leetcode 117. Populating Next Right Pointers in Each Node II

来源:互联网 发布:电视盒子推荐 知乎 编辑:程序博客网 时间:2024/06/05 07:00
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    7After calling your function, the tree should look like:         1 -> NULL       /  \      2 -> 3 -> NULL     / \    \    4-> 5 -> 7 -> NULLSubscribe to see which companies asked this question.

如果按照上一题的解法,那就需要去寻找next的位置
这里需要注意的是先做右子树,再做左子树
比较清晰易懂的解法

public class Solution {    public void connect(TreeLinkNode root) {        if(root==null) return;        TreeLinkNode right =null ;        if(root.left!=null&&root.right!=null){            root.left.next = root.right;            root.right.next = getNext(root.next);        }else{            if(root.left!=null) right = root.left;            if(root.right!=null) right = root.right;            if(right!=null) right.next = getNext(root.next);        }        // connect(root.next);        connect(root.right);        connect(root.left);    }    TreeLinkNode getNext(TreeLinkNode p){        if(p==null) return null;        if(p.left!=null){            return p.left;        }else if(p.right!=null){            return p.right;        }else{            return getNext(p.next);        }    }}
阅读全文
0 0
原创粉丝点击