LeetCode 117. 填充每个节点的下一个右侧节点指针 II
思路:
先查看左右子树是否都不为空,直接左子.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相关推荐
- 2.<tag-二叉树和层序遍历相关题>-lt.116. 填充每个节点的下一个右侧节点指针 + lt.117. 填充每个节点的下一个右侧节点指针 II 1
lt.116. 填充每个节点的下一个右侧节点指针 [案例需求] [思路分析一, 迭代法] [代码实现] /* // Definition for a Node. class Node {public ...
- 力扣116. 填充每个节点的下一个右侧节点指针(C++,附思路)
题目链接在这里: 116. 填充每个节点的下一个右侧节点指针 - 力扣(LeetCode) (leetcode-cn.com)https://leetcode-cn.com/problems/popu ...
- 二叉树:填充每个节点的下一个右侧节点指针(java)
leetcode116:填充每个节点的下一个右侧节点指针 leetcode原题链接: 题目描述 递归解法一 递归方法二(效率更高) 二叉树专题 leetcode原题链接: 116题:填充每个节点的下一 ...
- leetcode116. 填充每个节点的下一个右侧节点指针
116. 填充每个节点的下一个右侧节点指针 难度中等128 给定一个完美二叉树,其所有叶子节点都在同一层,每个父节点都有两个子节点.二叉树定义如下: struct Node {int val;Node ...
- 116. 填充每个节点的下一个右侧节点指针
2020-05-28 1.题目描述 填充每个节点的下一个右侧节点指针 2.题解 层次遍历即可 3.代码 /* // Definition for a Node. class Node { public ...
- 力扣 填充每个节点的下一个右侧节点指针
填充每个节点的下一个右侧节点指针 题目描述 给定一个完美二叉树,其所有叶子节点都在同一层,每个父节点都有两个子节点.二叉树定义如下: struct Node { int val; Node *left ...
- [leetcode-117]填充每个节点的下一个右侧节点指针 II
(1 AC) 填充每个节点的下一个右侧节点指针 I是完美二叉树.这个是任意二叉树 给定一个二叉树 struct Node {int val;Node *left;Node *right;Node *n ...
- LeetCode 117. 填充每个节点的下一个右侧节点指针 II(递归循环)
文章目录 1. 题目 2. 解题 2.1 递归 2.2 queue循环 2.3 利用next循环 1. 题目 填充它的每个 next 指针,让这个指针指向其下一个右侧节点.如果找不到下一个右侧节点,则 ...
- 49. Leetcode 117. 填充每个节点的下一个右侧节点指针 II (二叉树-二叉树遍历)
给定一个二叉树struct Node {int val;Node *left;Node *right;Node *next; } 填充它的每个 next 指针,让这个指针指向其下一个右侧节点.如果找不 ...
- [leetcode] 117 填充每个节点的下一个右侧节点指针
给定一个 完美二叉树 ,其所有叶子节点都在同一层,每个父节点都有两个子节点.二叉树定义如下: struct Node { int val; Node *left; Node *right; ...
最新文章
- 2019诺贝尔物理学奖再度颁向宇宙大爆炸:加拿大瑞士3学者获奖,最年长者已84岁...
- 【安富莱原创开源应用第3期】花式玩转网络摄像头之VNC远程桌面版本,稳定运行2年不死机...
- [转]系统吞吐量(TPS)、用户并发量、性能测试概念和公式---学习
- scala部分应用函数_Scala中的部分函数
- oracle 多表视图更新
- PWA 即将终结应用程序商店!
- 网页版电脑桌面远程操控_我真的再也不买电暖器了 - 电暖器智能版
- 压缩 质量不变_来了!业内首个HEIF图像高质量压缩FPGA加速方案
- 数据存储技术-专题介绍
- Neo4j_02了解图数据库
- Cypress自动化测试系列之三
- c语言 intptr_t
- 深度神经网络训练过程中为什么验证集上波动很大_一个值得深思的问题?为什么验证集的loss会小于训练集的loss...
- 【愚公系列】2022年04月 微信小程序-实时音视频播放
- h5制作导出html,H5制作工具Hype的导出功能详解
- 【算法思想】数学归纳法在算法题中的应用(含例题举例)
- 争对让望对思野葛对山栀注解_望对思的上句,望对思的上一句是
- [热门]浅谈360主动防御(360提示)、瑞星主动及360实时查杀的免杀技巧
- github一直发邮件,如何屏蔽
- NONMEN软件概览及数据文件
热门文章
- jquery获取input值
- asp.net用户注销或者关闭网页时清除用户Cookie
- SQL:select case when(转)
- We're A Happy Family-A Tribute To Ramones
- 代码里配置java代理
- 【转载】VMware vSphere中三种磁盘规格的解释说明
- String str=“i“与 String str=new String(“i”)一样吗?
- 犯病的chorme(谷歌浏览器)之css加载失败
- i2c总线注意事项和在linux下使用实战
- 程序员学历要求越来越高,薪酬天花板犹如发际线,原因很简单!