zoukankan      html  css  js  c++  java
  • 117. 填充每个节点的下一个右侧节点指针 II(没想到,但是其实蛮简单的)

    https://leetcode-cn.com/problems/populating-next-right-pointers-in-each-node-ii/solution/di-gui-fa-jian-dan-yi-dong-ban-xin-shou-kan-by-lov/

     

     思路:要用到一个函数,作用是找这个根节点root的最右侧子节点的next的指向。打个比方,对于上图里的树,getNextNoNullChild(2),得到的就是5的next的指向,也就是7,getNextNoNullChild(1),得到3

    之后还可以递归法,直接看代码吧

    /*
    // 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 && root.right == null))//此时结果为空,记得要返回根节点才对!!!
            {
                return root;
            }
            if(root.left!=null&&root.right!=null)//左右子节点都不为空,左节点的next连到右节点,右节点的next用函数求
            {
                root.left.next=root.right;
                root.right.next=getNextNoNullChild(root);
            }
             if (root.left == null) {//左节点为空,右节点的next用函数求
                root.right.next = getNextNoNullChild(root);
            }
            if (root.right == null) {//。。。。。
                root.left.next = getNextNoNullChild(root);
            }
            // //这里要注意:先递归右子树,否则右子树根节点next关系没建立好,左子树到右子树子节点无法正确挂载
            root.right=connect(root.right);
             root.left = connect(root.left);
             return root;
    
        }
          private static  Node getNextNoNullChild(Node root) 
          {
              while(root.next!=null)
              {
                  if(root.next.left!=null)
                  {
                      return root.next.left;
                  }
                  else if(root.next.right!=null)
                  {
                      return root.next.right;
                  }
                  root = root.next;
              }
              return null;
          }
           
    
    
    }
    

      

  • 相关阅读:
    Linux删除文件相关命令
    Bing语句
    VS2013配置Winpcap
    node10-mongoose
    node09-cookie
    node08-express
    node07-http
    node06-path
    node05-fs
    node04-buffer
  • 原文地址:https://www.cnblogs.com/lzh1043060917/p/12850471.html
Copyright © 2011-2022 走看看