内容简介:前面讲解了《什么叫做二叉树每层节点的下一个节点呢?可以看下图,是一个标准的二叉树。
一、背景
前面讲解了《 前序、中序、后续构造二叉树 》,今天来讲解另一个问题:怎么构造二叉树每层节点的下一个节点。
二、问题
什么叫做二叉树每层节点的下一个节点呢?
可以看下图,是一个标准的二叉树。
每个节点有一个指向下一个右侧的节点指针,如果没有下一个,这个指针的值就为 NULL
。
看了这个图,大家应该就明白这篇文章的问题是什么了。
三、标准二叉树
我们先来看看对于标准二叉树,怎么构造同层的下一个节点指针。
仔细看图,可以发现图分两部分:一个是两个子树递归完成这个操作,一个是左子树的最右边指向右子树的最左边。
所以我们实现两个函数即可:一个是对一个树进行构造,一个是左子树和右子树进行构造。
四、普通二叉树
对于标准的二叉树,完成同层下一个节点的构造很简单。
但是对于普通的二叉树,就会遇到各种各样的问题。
比如对于下面的二叉树,我们不知道左子树的某一层最右边是哪个了。
实际应该这样连接。
而且,有一个更打击人的提示是:二叉树某一层的最左边也不是很容易确定。
面对这个问题,可以想到的第一个方法是 BFS
。
我们使用队列广度优先搜索,每搜索一层,记录当前层的个数。
这样就能一层层的来进行构造下一个节点了。
但是,我们看下题的要求,会发现要求使用常数的额外空间。
所以我们就需要观察这道题来找相关特征,从而尝试去找突破口。
假设我们第 n
层已经全部找到下一个节点了。
我们能不能利用第 n
层的信息来快速找到第 n+1
层的节点了。
原来还真可以。
我们只需要保存第 n
层的第一个节点,然后通过遍历 next
可以找到第 n+1
层的第一个节点。
之后继续遍历 next
,就可以找到下一个第 n+1
层的节点,然后串起来即可。
五、最后
好了,这篇文章教大家怎么给一个二叉树构造每个节点的下一个节点。
标准二叉树主要学习递归,而普通二叉树,则有点难度了,你想到了吗?
-EOF-
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- xml创建节点(根节点、子节点)
- Vultr VPS 节点选择方法 | 各节点延迟一览
- 1.19 JQuery2:节点插入与节点选取
- POC分布式节点算法机制下的超级节点计划
- tikv节点下线缩容后改造成tidb节点记录
- Redis 哨兵节点之间相互自动发现机制(自动重写哨兵节点的配置文件)
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
零售的哲学:7-Eleven便利店创始人自述
[日] 铃木敏文 / 顾晓琳 / 江苏文艺出版社 / 2014-12-1 / 36
全球最大的便利店连锁公司创始人——铃木敏文,结合40多年零售经验,为你讲述击中消费心理的零售哲学。铃木敏文的很多创新,现在已经成为商界常识,本书把那些不可思议的零售创新娓娓道来。关于零售的一切:选址、订货、销售、物流、管理……他一次又一次地在一片反对声中创造出零售界的新纪录。 翻开本书,看铃木敏文如何领导7-11冲破层层阻碍,成为世界第一的零售哲学。一起来看看 《零售的哲学:7-Eleven便利店创始人自述》 这本书的介绍吧!