限集T1,T2,…,Tm,其中Ti是一棵树,称为根结点子树 例:(a)是只有一个根结点的树.(b)是有13个结点的树,A
是根,其余结点分成三个互不相交的子集: T1=(B,E,F,K,L);T2=(C,G);T3=(D,H,I,J,M).T1,T2,T都 是根A的子树,本身也是一棵树
A
A
T1
(a)只有根结
DeleteChild(&T,&P,i); 初始条件:树T存在,p指向T中某个结点,1<=i<=P指结点
的度 操作结果:删除T中P所指结点的第i棵子树
TraverseTree(T,Visit()); 初始条件:树T存在,Visit是对结点操作的应用函数 操作结果:按某种次序树对T的每个结点调用函数visit()一
二叉树的基本操作
InitBiTree(&T); 操作结果:构造空二叉树T
DestroyBiTree(&T); 初始条件:二叉树T存在 操作结果:销毁二叉树T
CreatBiTree(&T,definition); 初始条件:definition给出二叉树T的定义 操作结果:按definition树构造二叉树T
例下图,D是A的子树T3的根,则D是A的孩子, 而A则是D的双亲,同一个双亲的孩子之间互称兄弟。 结点的层次从根开始定义起,根为第一层,根的孩子为第二层。
A
T1 B
C T2
T3 D
EFGຫໍສະໝຸດ HIJK
L
M
有序树:将树中结点的各子树看成从左到右是有 次序的(不能互换),称该树为有序树。
无序树:将树中结点的各子树看成从左到右是无 次序的(不能互换),称该树为无序树。
树的基本操作
基本操作P: InitTree(&T); 操作结果:构造空树T