二叉树就是这么简单

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

内容简介:本来之前写过《结果上篇文章没介绍《二叉树》,直接介绍《今天把《二叉树》的知识补上。

一、背景

本来之前写过《 数组 》、《 链表 》、《 队列与栈 》、《 哈希 》、《 二分查找 》,后面就开始写树相关的文章了。

结果上篇文章没介绍《二叉树》,直接介绍《 二叉搜索树 》了。

今天把《二叉树》的知识补上。

二、基础知识

树是一种经常用到的数据结构,用来模拟具有树状结构性质的数据集合。

树里的每一个节点有一个根植和一个包含所有子节点的列表。

二叉树是一种更为典型的树树状结构。

如它名字所描述的那样,二叉树是每个节点最多有两个子树的树结构,通常子树被称作“左子树”和“右子树”。

三、树的遍历

二叉树一般有三种遍历:前序遍历、中序遍历、后续遍历。

前序遍历首先访问根节点,然后遍历左子树,最后遍历右子树。

中序遍历是先遍历左子树,然后访问根节点,然后遍历右子树。

后序遍历是先遍历左子树,然后遍历右子树,最后访问树的根节点。

通常来说,使用递归进行这三种遍历都是非常简单的事情。

而使用迭代的方法实现这三种遍历,就需要使用自己维护栈这个数据结构了。

二叉树的前序遍历相对还算简单,对于当前树根节点,直接输出答案。

代码如下。

二叉树就是这么简单

而对于中序和后续遍历,则存在一个问题:当前树的根节点怎么保存。

出栈的时候,我们怎么知道这是一个尚未处理的子树,还是已经处理的子树。

如果可以修改树的节点值,那处理过的节点置为空即可。

例如中序遍历的代码如下:

二叉树就是这么简单

后续的代码和中序很类似,这里就不上代码了。

有时候,我们需要一层层的遍历树。

这个其实就是常见的 广度优先搜索,简称 BFS。

我们一般使用队列这个数据结构来实现 BFS,在队列的系列中已经教过大家了。

四、相关实践

树的问题一般有两种:

一种是递归到叶子节点就确定一个答案的。

一种是根据两个儿子的状态,再加当前节点的状态,综合得到一个答案。

比如树的最大深度,两种方法都可以。

二叉树就是这么简单

对于判断树是否树对称二叉树,则只能使用第二种方法。

二叉树就是这么简单

而对于是否存在一条根到叶子节点的路径和等于指定数字的问题,则使用第一种方法。

二叉树就是这么简单

五、最后

好了,二叉树的基础知识相信你了解的差不多了。

随后我会把这些问题的题号留言放出来。

另外,对于其他文章,如果你发现对应的题号没放出来,可以留言告诉我,可能我之前忘记了。

-EOF-


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

查看所有标签

猜你喜欢:

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

大数据预测

大数据预测

【美】埃里克·西格尔 / 周昕 / 中信出版社 / 2014-3 / 58.00

360公司董事长周鸿祎、《罗辑思维》主讲人罗振宇郑重推荐 2020年的一天,在你驱车前往公司的路上,导航系统通过预测交通流量,会自动帮你选择一条最合适的交通路线;车内推荐系统会根据你的饮食习惯预测你可能会喜欢吃什么,并推荐沿途的早餐店;你的电子社交助理已经为你自动选择了你可能感兴趣的社交网信息;当车内系统预测到你驾车有些分心时,座椅会自动震动进行提醒…… 以上这些情景不是科幻大片独有的......一起来看看 《大数据预测》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

MD5 加密
MD5 加密

MD5 加密工具