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

    题目连接

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

    题目思路

    这个题要求我们以常数级别的空间完成对树中next指针的连接。这个题最容易的思路就是使用中序遍历,在遍历过程中把指针连接上。但是这个题不可以使用额外的空间。
    于是我们可以想到另外一个方法,我们在当前层次把下一层次的next指针安排上,因为这个树是一颗二叉树,所以next指针其实依赖于其父节点的右孩子。那么我们在当前层次就可以很顺利的把孩子指针搞定。

    代码实现

    /*
    // 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;
            }
            helper(root);
            connect(root.right);
            connect(root.left);
            return root;
        }
    
        public void helper(Node root){
            if(root == null){
                return;
            }
            if(root.left != null && root.right != null){
                root.left.next = root.right;
                root.right.next = findNext(root);
            }else if(root.left == null && root.right != null){
                root.right.next = findNext(root);
            }else if(root.right == null && root.left != null){
                root.left.next = findNext(root);
            }
        }
    
        public Node findNext(Node root){
            root = root.next;
            return root == null? null : root.left == null? root.right : root.left;
        }
    }
    

    总结

    这个题使我想多了,还以为是多叉树的连接,如果是多叉树的话就需要在findNext这个方法内进行链表的遍历,我记得lc上也有多叉树的next指针连接的题目~
    通过截图

  • 相关阅读:
    几何变换
    图片移动、旋转、resize、
    load、display、save
    java基础—java三大集合ArrayList、HashSet、HashMap
    java基础—修饰符、抽象类、接口
    java基础——转义字符
    java基础—String类型常用api
    Python中 sys.argv[]的用法
    Java—this关键字
    在CMD中运行Python文件
  • 原文地址:https://www.cnblogs.com/ZJPaang/p/13818650.html
Copyright © 2011-2022 走看看