第六章树和二叉树6
1树的类型定义6
2二叉树的类型定义6
3二叉树的存储结构6
4二叉树的遍历6
5线索二叉树6
6树和森林的表示方法6
7树和森林的遍历6
8哈夫曼树与哈夫曼编码6
1树的类型定义数据对象D:D是具有相同特性的数据元素的集合
若D为空集,则称为空树
否则:(1)在D中存在唯一的称为根的数据元素root;(2)当n>1时,其余结点可分为m(m>0)个互不相交的有限集T1,T2,…,Tm,其中每一棵子集本身又是一棵符合本定义的树,称为根root的子树
数据关系R:基本操作:查找类插入类删除类Root(T)//求树的根结点查找类:Value(T,cur_e)//求当前结点的元素值Parent(T,cur_e)//求当前结点的双亲结点LeftChild(T,cur_e)//求当前结点的最左孩子RightSibling(T,cur_e)//求当前结点的右兄弟TreeEmpty(T)//判定树是否为空树TreeDepth(T)//求树的深度TraverseTree(T,Visit())//遍历InitTree(&T)//初始化置空树插入类:CreateTree(&T,definition)//按定义构造树Assign(T,cur_e,value)//给当前结点赋值InsertChild(&T,&p,i,c)//将以c为根的树插入为结点p的第i棵子树ClearTree(&T)//将树清空删除类:DestroyTree(&T)//销毁树的结构DeleteChild(&T,&p,i)//删除结点p的第i棵子树ABCDEFGHIJMKLA(B(E,F(K,L)),C(G),D(H,I,J(M)))T1T3T2树根例如:(1)有确定的根;(2)树根和子树根之间为有向关系
有向树:有序树:子树之间存在确定的次序关系
无序树:子树之间不存在确定的次序关系
对比树型结构和线性结构的