武汉科技大学WuhanUniversityofScienceandTechnology数据结构DataStructures张凯计算机学院软件工程系2011年3月12日树和森林第6章树和二叉树树的基本概念二叉树遍历二叉树和线索二叉树赫夫曼树及其应用树的存储结构§6
4树和森林三种常用的存储结构:(1)双亲表示法(2)孩子表示法(3)孩子兄弟表示法树的存储结构——双亲表示法§6
4树和森林即以一组连续空间存储树的结点,同时在每个结点中附设一个指示器指示其双亲结点在链表中的位置
DACREBFHGK双亲结点下标9876543210666311000-1KHGFEDCBAR树的双亲表存储表示§6
4树和森林#defineMAX_TREE_SIZE100typedefstructPTNode{//结点结构Elemdata;intparent;//双亲位置域}PTNode;typedefstruct{//树结构PTNodenodes[MAX_TREE_SIZE];intr,n;//根结点的位置和结点个数}PTree;树的存储结构——双亲表示法§6
4树和森林这种存储结构利用每个结点(除根结点)只有唯一双亲的性质,Parent(T,x)操作可在常量时间内实现
反复调用Parent操作,直到遇见无双亲的结点时,便找到了树的根
但在这种表示方式中,求结点的孩子时需遍历整个结构
树的存储结构——孩子表示法§6
4树和森林由于树中每个结点可能有多棵子树,则考虑用多重链表,即结点有多个指针域,其中每个指针指向一棵子树的根结点,此时链表中的结点可以有如下两种结点格式:datadegreechild1child2…childdydatachild1child2…childdx采用第一种格式§6
4树和森林datachild1child2…childdx多重链表中的结点是同构的,其中dx为树