栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

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

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

题目描述

样例描述

思路

修改BFS + 找规律

  1. 修改BFS,不需要用到队列(O(n)),直接利用next特性。
  2. 当前结点左孩子的next指向右孩子,右孩子的next指向宽搜中当前结点下一个的左孩子。
  3. 左孩子的next一定不为空,注意判断右孩子的next是否为空。
  4. 利用root不断取左孩子往下层层遍历。
代码

class Solution {
    public Node connect(Node root) {
        if (root == null) return root;
          //先保存根结点,因为后面会改变
          Node originalRoot = root;
          //当下一层不为空
          while (root.left != null) {
              for (Node p = root; p != null; p = p.next) {
                  //当前结点左孩子的next一定Wie右孩子
                  p.left.next = p.right;
                  //右孩子不一定有next,先判断是否为空
                  if (p.next != null) {
                      p.right.next = p.next.left;
                  }
              }
              root = root.left;
          }
          return originalRoot;
    }
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/349513.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号