码迷,mamicode.com
首页 > 其他好文 > 详细

116. 填充每个节点的下一个右侧节点指针

时间:2020-05-08 12:56:19      阅读:40      评论:0      收藏:0      [点我收藏+]

标签:技术   也有   val   mic   highlight   ini   二叉树   class   节点   

技术图片

 

 技术图片

 

思路:

(1)因为是一个完美二叉树,也就是,一个节点要么没有左右子节点,要么左右子节点都有

(2)假如根节点为空。或者根节点左子树为空,不需要进行算法,返回root

(3)此时根节点一定有子树,把根的左子节点和右子节点连接起来

(4)之后判断根节点是否有next(和根同一行的节点),有的话,还是因为完美二叉树,这个next指向的节点一定也有左右子节点,把根的右节点,和跟的next的左子节点连接

(5)对跟的左右节点递归

/*
// Definition for a Node.
class Node {
    public int val;
    public Node left;
    public Node right;
    public Node next;

    public Node() {}
    
    public Node(int _val) {
        val = _val;
    }

    public Node(int _val, Node _left, Node _right, Node _next) {
        val = _val;
        left = _left;
        right = _right;
        next = _next;
    }
};
*/

class Solution {
    public Node connect(Node root) {//显然,当根节点为空,或者根节点左子树空,程序可以结束了
        if(root==null||root.left==null)
        {
            return root;
        }
        root.left.next=root.right;//完美二叉树,假如有左子树,一定有右子树的,这里是把左右子树根节点连接起来
        if(root.next!=null)//根节点有跟它同一级的右侧节点,而且根节点有子节点,那根节点的右侧节点就一定有子节点
        {
            root.right.next=root.next.left;
        }
         connect(root.left);
        connect(root.right);//分别连接root左右子树,因为跨越子树的连接已经做了,右子树自身的连接也做了,所以当前层的连接做好了
        return root;
        
    }
}

  

116. 填充每个节点的下一个右侧节点指针

标签:技术   也有   val   mic   highlight   ini   二叉树   class   节点   

原文地址:https://www.cnblogs.com/lzh1043060917/p/12849581.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!