美文网首页程序员
力扣 116 构建树的每一个节点的next节点

力扣 116 构建树的每一个节点的next节点

作者: zhaojinhui | 来源:发表于2020-11-16 04:33 被阅读0次

    题意:给一个树,构建它的每一个节点的next节点

    思路:按层遍历树,

    1. 每次遍历到一个节点cur时,判断它的pre节点是否为空,如果不为空,那么pre.next = cur,
    2. 如果是当前层的最后一个节点那么它的next为null

    思想:按层遍历

    复杂度:时间O(n),空间O(n)

    /*
    // 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)
                return null;
            Queue<Node> q = new LinkedList();
            q.add(root);
            Node pre = null;
            int level = 1;
            int start = 0;
            int end = 1;
            while(!q.isEmpty()) {
                Node cur = q.poll();
                start++;
                if(pre != null) {
                    pre.next = cur;
                }
                pre = cur;
                if(cur.left != null) {
                    q.add(cur.left);
                    end++;
                }
                if(cur.right != null) {
                    q.add(cur.right);
                    end++;
                }
                if(level == start) {
                    pre = null;
                    level = end;
                }
            }        
            return root;
        }
    }
    

    相关文章

      网友评论

        本文标题:力扣 116 构建树的每一个节点的next节点

        本文链接:https://www.haomeiwen.com/subject/qpnmbktx.html