二叉树的下一个节点

栏目: 数据库 · 发布时间: 6年前

内容简介:前面讲解了《什么叫做二叉树每层节点的下一个节点呢?可以看下图,是一个标准的二叉树。

一、背景

前面讲解了《 前序、中序、后续构造二叉树 》,今天来讲解另一个问题:怎么构造二叉树每层节点的下一个节点。

二、问题

什么叫做二叉树每层节点的下一个节点呢?

可以看下图,是一个标准的二叉树。

二叉树的下一个节点

每个节点有一个指向下一个右侧的节点指针,如果没有下一个,这个指针的值就为 NULL

二叉树的下一个节点

看了这个图,大家应该就明白这篇文章的问题是什么了。

三、标准二叉树

我们先来看看对于标准二叉树,怎么构造同层的下一个节点指针。

仔细看图,可以发现图分两部分:一个是两个子树递归完成这个操作,一个是左子树的最右边指向右子树的最左边。

所以我们实现两个函数即可:一个是对一个树进行构造,一个是左子树和右子树进行构造。

二叉树的下一个节点

四、普通二叉树

对于标准的二叉树,完成同层下一个节点的构造很简单。

但是对于普通的二叉树,就会遇到各种各样的问题。

比如对于下面的二叉树,我们不知道左子树的某一层最右边是哪个了。

二叉树的下一个节点

实际应该这样连接。

而且,有一个更打击人的提示是:二叉树某一层的最左边也不是很容易确定。

二叉树的下一个节点

面对这个问题,可以想到的第一个方法是 BFS

我们使用队列广度优先搜索,每搜索一层,记录当前层的个数。

这样就能一层层的来进行构造下一个节点了。

二叉树的下一个节点

但是,我们看下题的要求,会发现要求使用常数的额外空间。

所以我们就需要观察这道题来找相关特征,从而尝试去找突破口。

假设我们第 n 层已经全部找到下一个节点了。

我们能不能利用第 n 层的信息来快速找到第 n+1 层的节点了。

原来还真可以。

我们只需要保存第 n 层的第一个节点,然后通过遍历 next 可以找到第 n+1 层的第一个节点。

之后继续遍历 next ,就可以找到下一个第 n+1 层的节点,然后串起来即可。

二叉树的下一个节点

五、最后

好了,这篇文章教大家怎么给一个二叉树构造每个节点的下一个节点。

标准二叉树主要学习递归,而普通二叉树,则有点难度了,你想到了吗?

-EOF-


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Design systems

Design systems

Not all design systems are equally effective. Some can generate coherent user experiences, others produce confusing patchwork designs. Some inspire teams to contribute to them, others are neglected. S......一起来看看 《Design systems》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

MD5 加密
MD5 加密

MD5 加密工具