树和二叉树

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
张乃孝 算法与数据结构——C语言 描述 15
5.1.4
树的基本运算
• 创建一棵空树 Tree createTree( Node p, Tree t1, Tree t2, …, Tree ti ) i=1, 2, 3, … • 判断某棵树是否为空 int isNull ( Tree t ) • 求树中的根结点,若为空树,则返回一特殊值 Node root ( Tree t )
• 求某个指定结点的父结点,当指定结点为根时,返回一特 殊值
Node parent ( Node p )
张乃孝 算法与数据结构——C语言 描述 16
(b) 树t '
9
张乃孝 算法与数据结构——C语言 描述
父结点,子结点,边
若结点y是结点x的一棵子树的根,则x称作y的父结 点(或父母);y称作x的子结点(或子女);有序 对<x,y>称作从x到y的边。
例如树t中,C是E的父结点,E是C的子结点,<C,E>是从C 到E的边(它对应着图中的有向线段CE)。
张乃孝 算法与数据结构——C语言 描述 7
树结构的特点:
(1)树的根的结点没前驱结点,除了根结点之外 的所有结点都有且只有一个前驱结点; (2)树的结点可以有零个或多个后继结点。
树结构描述的是层次关系。
张乃孝 算法与数据结构——C语言 描述
8
5.1.2
基本术语
(a) 树t
图5.2 树ຫໍສະໝຸດ Baidu和树t '
树的递归定义:
树(Tree):是包括n(n>=0)个结点的有限集T。当T 非空时,满足: (1)有且仅有一个特别标出的称为根的 结点; (2)除根结点外,其余结点可分为m(m>=0) 个互不相交非空的有限集T1, T2, …, Tm, 其中 每一个集合本身又是一棵树,称为根的子树 (Subtree)。 空树:不包括任何结点的树。
路径,路径长度
如果x是y的一个祖先,又有x=x0,x1,…,xn=y, 满足xi(i=0,1,…,n-1)为xi+1的父结点,则 称x0,x1,…,xn为从x到y的一条路径。n称为这 条路径的长度。路径中相邻的两个结点可以表示成 一条边。
例如树t中A,C,E,I,J是从A到J的一条路径,其长度为4。
第五章 树和二叉树
5.1 5.2 5.3 5.4 5.5 树与树林 树和树林的存储表示 二叉树 二叉树的存储表示 哈夫曼算法及其应用
张乃孝 算法与数据结构——C语言 描述
1
线性结构和非线性结构。
树形结构是以分支关系定义的层次结构, 在现实世界中广泛存在,在计算机领域中也 有广泛应用。
本章重点讨论二叉树的存储结构及其各 种操作,并研究树和森林与二叉树之间的转 换关系。
张乃孝 算法与数据结构——C语言 描述 4
树的表示方法:
A B C
D
I
E
J
F
G
H
(a)树形表示
(c ) 凹入表
5
张乃孝 算法与数据结构——C语言 描述
A
(b) 文氏图
B
D I E J F G C H
(A(B(D)(E(I)(J))(C(G)(H))) (d) 嵌套括号表示法
张乃孝 算法与数据结构——C语言 描述 6
张乃孝 算法与数据结构——C语言 描述
13
无序树、有序树
对子树的次序不加区别的树叫作无序树。对子树之 间的次序加以区别的树叫作有序树。
例如在图5.2中,按无序树的概念t和t'是同一棵树,按有序 树的概念则是不同的树,本章讨论的树一般是有序树。
结点的次序 在有序树中可以从左到右地规定结点的次序。按从 左到右的顺序,我们可以把一个结点的最左边的子 结点简称为最左子结点,或直接称为长子,而把长 子右边的结点称为次子。
12
结点的度数、树的度数
结点的子女个数叫作结点的度数。树中度数最大的 结点的度数叫作树的度数。
例如t中A,C,E,J的度数分别为3,1,2,0;t的度数为3
树叶、分支结点
度数为0的结点称作树叶或终端结点;度数大于0的 结点称作分支结点或非终端结点。
例如树t中B,F,G,H,J都是树叶,其余结点都是分支结 点。
张乃孝 算法与数据结构——C语言 描述 11
结点的层数 规定根的层数为0,其余结点的层数等于其父母结 点的层数加1。
例如t中,0层的结点是A,1层的结点有B,C,D,4层的结 点是J。
树的深度或高度
树中结点的最大层数称为树的深度或树的高度。
例如树t中,树的深度为4。
张乃孝 算法与数据结构——C语言 描述
兄弟结点 具有同一父母的结点彼此称作兄弟。
树t中B,C,D互为兄弟,F,G互为兄弟,等等。注意,E和F 并不是兄弟。
张乃孝 算法与数据结构——C语言 描述 10
祖先,子孙
若结点y在以结点x为根的一个子树(或树)中,且 y≠x,则称x是y的祖先,y是x的子孙。
例如树t中,A是其它各结点的祖先;C是E,H,I,J的祖先。
例如在t中结点B是结点A的长子,结点C是结点A的次子,是 结点B的兄弟。
张乃孝 算法与数据结构——C语言 描述 14
5.1.3
集合。
树林
树林:是m(m>=0)棵互不相交的树所组成的
就逻辑结构而言,任何一棵树是一个二元组
Tree=(root,F) , 其中root称为树的根结点,F是m
(m0)棵子树构成的树林,F=(T1, T2,…,Tm), 其 中Ti=(ri,Fi)称作根root的第i棵子树;当m0时,在 树根和其子树林之间存在下列关系: RF={<root, ri> | i=1,2,…,m, m>0}
A有子女B,C; B和 C分别有子女D,E,F和G,H;E有 子女I , J。 T=(N,R) ,其中 N={A, B, C, D, E, F, G, H, I, J} R={ A, B, A, C, B, D , B, E, B, F, C, G, C, H, E, I, E, J }
张乃孝 算法与数据结构——C语言 描述
2
5.1
树与树林
5.1.1 树的定义 5.1.2 基本术语 5.1.3 树林 5.1.4 树的基本运算
5.1.5 树的周游
5.1.6 树林的周游
张乃孝 算法与数据结构——C语言 描述 3
5.1.1
树的定义
树(Tree)的例子:一个家族。
相关文档
最新文档