树和二叉树/day2

树和二叉树: 树是非常重要的非线性结构。
存储的信息:例如计算机文件夹的管理,一般用用在组织管理(与省市县乡村的层次划分类似)。

结点(node):一个数据元素及其若干指向其子树的分支。

结点的度(degree) 、树的度:结点所拥有的子树的棵 数称为结点的度。树中结点度的最大值称为树的度。

树中的一些术语:叶子(left)结点、非叶子结点、孩子结点、双亲结点、兄弟结点、森林(forest)(若将一棵树的根结点删除,剩余的子树就构 成了森林) 

树的表现形式除了常见的倒悬树之外还有如下所示形式。

二叉树:

性质1:第i层节点个数最多为2**(i-1)
性质2:深度为k的二叉树至多2**k-1个节点
性质3:树的度,节点的度,即是有几个分支,对于任何一颗二叉树,若叶子节点为n0,度为2的节点为n2,则n0=n2+1

二叉树的存储结构

(1)顺序存储结构

用一组地址连续的存储单元依次“自上而下、 自左至右”存储完全二叉树的数据元素

完全二叉树的存储如下:

非完全二叉树的存储如下:

非完全二叉树需要先补成完全二叉树,然后再存储到一维数组中。

(2)链式存储结构

二叉链表结点。有三个域:一个数据域,两个分别 指向左右子结点的指针域 – 三叉链表结点。除二叉链表的三个域外,再增加一 个指针域,用来指向结点的父结点。

二叉链表与三叉链表的不同点在于:二叉链表只能从一个节点找到他的孩子节点,因为他没有记录上一个节点的信息。

而三叉链表则可以回溯找到他的上一个节点,因为他记录了父节点的信息。

二叉树的链式存储形式:

二叉树的遍历

二叉树有三种遍历方式:

– DLR——先(根)序遍历。

– LDR——中(根)序遍历。

– LRD——后(根)序遍历。

练习:

对这棵树的先序遍历结果为:A B C,      中序遍历结果为:B  A  C ,   后序遍历结果为:  B  C  A

深度优先结果为:

先序遍历的结果为:A  B  C  D  E  F  G  H  K

中序遍历的结果为:B  D  C  A  E  H  G  K  F

后序遍历的结果为:D  C  B  H  K  G  F  E  A

广度优先结果为:

先序遍历:A  B  E  C  F  D  G  H  K

猜你喜欢

转载自blog.csdn.net/qq_39112101/article/details/88582528