zoukankan      html  css  js  c++  java
  • 116. 填充每个节点的下一个右侧节点指针

     

    思路:

    (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;
            
        }
    }
    

      

  • 相关阅读:
    PTA习题解析——修理牧场(2 种解法)
    MySQL——维护和用户管理
    MySQL 5+ 特性
    MySQL——增、删、改
    数字时代云计算与边缘计算的区别
    5G对工业互联网应用的影响
    物联网新商业四大趋势
    变革之下,“大数据安全”成数字化转型“必答题”
    Serverless 的初心、现状和未来
    7 个建议让 Code Review 高效又高质
  • 原文地址:https://www.cnblogs.com/lzh1043060917/p/12849581.html
Copyright © 2011-2022 走看看