树——树和二叉树的相关概念

树是一种非线性结构。

目录

引入

定义

树的其他表示方式

树的基本术语

树结构和线性结构的比较

二叉树

引入

定义

特点

特别注意

二叉树的基本形态

两种特殊形式的二叉树

满二叉树

完全二叉树

树和二叉树的抽象类型定义


引入

定义

而子树本身又是一个树,又可以看成是由一个根和其它元素所构成的集合组成的。所以很容易看出来,树的定义是一个递归的定义,也就是说它的结构是递归的,所以在后面我们对树进行操作的时候,往往要用到递归的算法

如图:

树的其他表示方式

最常用的形式还是最中间的那种树型

树的基本术语

树的深度:树中结点的最大层次。如上图树最大层次为第4层,所以该树的深度为4,有时候树的深度也称作树的高度,即这棵树的高度为4。

有序树:树中结点旳各子树从左至右有次序(最左边的为第一个孩子),即如果将T1,T2,T3的位置给换一下的话,就成另外一棵树了,也就不是这棵树了。

无序树:树中结点旳各子树无次序。

森林

上图那棵树也是一个森林,只不过是一个只包含一颗树的森林,那如果将根结点A去掉,就变成了一个有三棵树的森林。

像这样:

这是一个包含三棵树T1,T2,T3的森林。

树结构和线性结构的比较

二叉树:

引入

定义

特点

每个结点最多有两个孩子(二叉树中不存在度大于2的结点)。

子树有左右之分,其次序不能颠倒。

二叉树可以是空集合,根可以有空的左子树和空的右子树。

特别注意

二叉树不是树的特殊情况,它们是两个概念。

二叉树结点的子树要区分左子树和右子树,即使只有一颗子树也一定要进行区分说明它是左子树还是右子树。

而树当结点只有一个孩子时,就无须区分它是左还是右的次序,因此二者是不同的。这就是二叉树和树的最主要的差别。

如下图所示:

例:具有3个结点的二叉树以及树可能的形态:

二叉树的基本形态

其中空二叉树是一个结点都没有,即n=0。

两种特殊形式的二叉树

满二叉树

举例:

完全二叉树

举例:

另外:

树和二叉树的抽象类型定义

可以看到它的基本操作特别多,所以下面只列举几个重要的操作:

这就是树以及二叉树的初始化,先序、中序、和后序遍历的基本操作。

发布了23 篇原创文章 · 获赞 30 · 访问量 8675

猜你喜欢

转载自blog.csdn.net/l218623/article/details/104273119