思路:

先查看左右子树是否都不为空,直接左子.next —>右子

左不为空,但右为空,无法直接赋值,借助getNext递归函数,传入父节点的next。

右不为空(此时无论左是否为空不受影响),无法直接赋值,借助getNext递归函数,传入父节点的next。

至于为什么先递归root.right,原理如下:

        // 先确保 root.right 下的节点的已完全连接,因 root.left 下的节点的连接// 需要 root.left.next 下的节点的信息,若 root.right 下的节点未完全连// 接(即先对 root.left 递归),则 root.left.next 下的信息链不完整,将// 返回错误的信息。可能出现的错误情况如下图所示。此时,底层最左边节点将无// 法获得正确的 next 信息://                  o root//                 / \//     root.left  o —— o  root.right//               /    / \//              o —— o   o//             /        / \//            o        o   o

递归函数getNext不在讲解。

源码如下:

public Node connect(Node root) {if(root==null)return root;if(root.left!=null && root.right!=null)root.left.next=root.right;if(root.left!=null && root.right==null)root.left.next=getNext(root.next);if(root.right!=null)root.right.next=getNext(root.next);connect(root.right);connect(root.left);return root;}public Node getNext(Node root){if(root==null)return root;if(root.left!=null)return root.left;if(root.right!=null)return root.right;if(root.next!=null)return getNext(root.next);return null;}

LeetCode 117. 填充每个节点的下一个右侧节点指针 II相关推荐

  1. 2.<tag-二叉树和层序遍历相关题>-lt.116. 填充每个节点的下一个右侧节点指针 + lt.117. 填充每个节点的下一个右侧节点指针 II 1

    lt.116. 填充每个节点的下一个右侧节点指针 [案例需求] [思路分析一, 迭代法] [代码实现] /* // Definition for a Node. class Node {public ...

  2. 力扣116. 填充每个节点的下一个右侧节点指针(C++,附思路)

    题目链接在这里: 116. 填充每个节点的下一个右侧节点指针 - 力扣(LeetCode) (leetcode-cn.com)https://leetcode-cn.com/problems/popu ...

  3. 二叉树:填充每个节点的下一个右侧节点指针(java)

    leetcode116:填充每个节点的下一个右侧节点指针 leetcode原题链接: 题目描述 递归解法一 递归方法二(效率更高) 二叉树专题 leetcode原题链接: 116题:填充每个节点的下一 ...

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

    116. 填充每个节点的下一个右侧节点指针 难度中等128 给定一个完美二叉树,其所有叶子节点都在同一层,每个父节点都有两个子节点.二叉树定义如下: struct Node {int val;Node ...

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

    2020-05-28 1.题目描述 填充每个节点的下一个右侧节点指针 2.题解 层次遍历即可 3.代码 /* // Definition for a Node. class Node { public ...

  6. 力扣 填充每个节点的下一个右侧节点指针

    填充每个节点的下一个右侧节点指针 题目描述 给定一个完美二叉树,其所有叶子节点都在同一层,每个父节点都有两个子节点.二叉树定义如下: struct Node { int val; Node *left ...

  7. [leetcode-117]填充每个节点的下一个右侧节点指针 II

    (1 AC) 填充每个节点的下一个右侧节点指针 I是完美二叉树.这个是任意二叉树 给定一个二叉树 struct Node {int val;Node *left;Node *right;Node *n ...

  8. LeetCode 117. 填充每个节点的下一个右侧节点指针 II(递归循环)

    文章目录 1. 题目 2. 解题 2.1 递归 2.2 queue循环 2.3 利用next循环 1. 题目 填充它的每个 next 指针,让这个指针指向其下一个右侧节点.如果找不到下一个右侧节点,则 ...

  9. 49. Leetcode 117. 填充每个节点的下一个右侧节点指针 II (二叉树-二叉树遍历)

    给定一个二叉树struct Node {int val;Node *left;Node *right;Node *next; } 填充它的每个 next 指针,让这个指针指向其下一个右侧节点.如果找不 ...

  10. [leetcode] 117 填充每个节点的下一个右侧节点指针

    给定一个 完美二叉树 ,其所有叶子节点都在同一层,每个父节点都有两个子节点.二叉树定义如下: struct Node {   int val;   Node *left;   Node *right; ...

最新文章

  1. 2019诺贝尔物理学奖再度颁向宇宙大爆炸:加拿大瑞士3学者获奖,最年长者已84岁...
  2. 【安富莱原创开源应用第3期】花式玩转网络摄像头之VNC远程桌面版本,稳定运行2年不死机...
  3. [转]系统吞吐量(TPS)、用户并发量、性能测试概念和公式---学习
  4. scala部分应用函数_Scala中的部分函数
  5. oracle 多表视图更新
  6. PWA 即将终结应用程序商店!
  7. 网页版电脑桌面远程操控_我真的再也不买电暖器了 - 电暖器智能版
  8. 压缩 质量不变_来了!业内首个HEIF图像高质量压缩FPGA加速方案
  9. 数据存储技术-专题介绍
  10. Neo4j_02了解图数据库
  11. Cypress自动化测试系列之三
  12. c语言 intptr_t
  13. 深度神经网络训练过程中为什么验证集上波动很大_一个值得深思的问题?为什么验证集的loss会小于训练集的loss...
  14. 【愚公系列】2022年04月 微信小程序-实时音视频播放
  15. h5制作导出html,H5制作工具Hype的导出功能详解
  16. 【算法思想】数学归纳法在算法题中的应用(含例题举例)
  17. 争对让望对思野葛对山栀注解_望对思的上句,望对思的上一句是
  18. [热门]浅谈360主动防御(360提示)、瑞星主动及360实时查杀的免杀技巧
  19. github一直发邮件,如何屏蔽
  20. NONMEN软件概览及数据文件

热门文章

  1. jquery获取input值
  2. asp.net用户注销或者关闭网页时清除用户Cookie
  3. SQL:select case when(转)
  4. We're A Happy Family-A Tribute To Ramones
  5. 代码里配置java代理
  6. 【转载】VMware vSphere中三种磁盘规格的解释说明
  7. String str=“i“与 String str=new String(“i”)一样吗?
  8. 犯病的chorme(谷歌浏览器)之css加载失败
  9. i2c总线注意事项和在linux下使用实战
  10. 程序员学历要求越来越高,薪酬天花板犹如发际线,原因很简单!