数据结构程序员我爱编程

数据结构(一):二叉树

2018-06-22  本文已影响8人  zhipingChen

定义

二叉树( binary tree )是有限节点集合构成的结构,其结构的递归定义为:

所以节点个数为零的空树也是二叉树,二叉树根节点的左、右子树也是二叉树,其结构同样符合以上定义,当左子树为空树时,表示根节点没有左子节点。且二叉树区分左、右子树,以下两个二叉树为不同的二叉树。

one another one

结构特性

首先说明下几个概念:


关于高度和深度的起始值 0 或 1 的个人看法:

对于深度、高度和层数的起点值,可能有些地方基数是从1开始计算的。对于这个起点值的设置,个人觉得如果你高兴,从10086开始也无妨,因为在应用中,这些数据量只是为了方便计算,起作用的只是相对值而已。

为了方便理解,这里设置基数为0,深度可以认为是从水平面,也就是0深度,往下有几层,深度就是几;高度类似理解,地平面是0,往上有几层,高度就是几。

参考下图:

图片来源:What is the difference between tree depth and height?


满二叉树、完全二叉树、完美(理想)二叉树

关于完全二叉树和满二叉树的定义,因为最初翻译的不同,已经混淆很久了,所以已经属于一个历史问题了。这里尽量不去分辨哪一种定义是正确的,只按照个人的理解去描述。

示例:

Full Binary Tree

示例:

Complete Binary Tree

示例:

Perfect Binary Tree

以上概念参考:


二叉树数据量

下面介绍二叉树几个数据量之间的关系,变量声明如下:

d:树的高度
n:节点总数
n_0:度为 0 的节点个数,即叶子节点个数
n_1:度为 1 的节点个数
n_2:度为 2 的节点个数
l_i:第 i 层上节点个数

上一篇下一篇

猜你喜欢

热点阅读