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

    在这里插入图片描述

    层次遍历

    思路:按层遍历每一个节点,将每一层的节点相连接

    /*
    // 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 root;
            Queue<Node> queue = new LinkedList<>();
            queue.offer(root);
            while (!queue.isEmpty()) {
                int size = queue.size();
                for (int i = 0; i < size;i++) {
                    Node cur = queue.poll();
                    if (i < size - 1) {
                        cur.next = queue.peek();
                    }
                   
                    if (cur.left != null)
                        queue.offer(cur.left);
                    if (cur.right != null)
                        queue.offer(cur.right);
                }
            }
            return root;
        }
    }
    

    使用已建立的next指针

    将每一层看作是由next指针构建的一个链表,链表的头节点为每一层的最左节点,构建next指针有两种情况:

    1. 两个子节点属于同一个父节点
      这时node.left.next = node.right
    2. 两个子节点不属于同一个父节点
      使用当前层已经建立的next指针将这个两个节点相连
      node.right.next = node.nexr.left
    class Solution {
        public Node connect(Node root) {
            if (root == null) return root;
            Node leftmost = root;
            while (leftmost.left != null) {
                Node head = leftmost;
                while (head != null) {
                    head.left.next = head.right;
                    if (head.next != null)
                        head.right.next = head.next.left;
                    head = head.next;
                }
                leftmost = leftmost.left;
            }
            return root;
        }
    }
    
  • 相关阅读:
    (转)Scrapy 深入一点点
    解决Scrapy shell启动出现UnicodeEncodeError问题
    js回调方法
    UGUI 之 控件以及按钮的监听事件系统 存档
    重力感应示例
    网格概念
    Flash Player11异步解码Bitmap
    打包包含已修改过的bug
    ios7官方推荐icon尺寸
    项目资源通过swc获取
  • 原文地址:https://www.cnblogs.com/PythonFCG/p/13859897.html
Copyright © 2011-2022 走看看