【数据结构】(九)(二叉)树的逻辑,性质,存储结构

【数据结构】(八)树的逻辑存储结构

(一)树的定义:

  1. 注意两点:不重合不交叉。
    【数据结构】(九)(二叉)树的逻辑,性质,存储结构_第1张图片
  2. 树的术语:
    【数据结构】(九)(二叉)树的逻辑,性质,存储结构_第2张图片
    【数据结构】(九)(二叉)树的逻辑,性质,存储结构_第3张图片
    【数据结构】(九)(二叉)树的逻辑,性质,存储结构_第4张图片
    【数据结构】(九)(二叉)树的逻辑,性质,存储结构_第5张图片
    【数据结构】(九)(二叉)树的逻辑,性质,存储结构_第6张图片
    【数据结构】(九)(二叉)树的逻辑,性质,存储结构_第7张图片
    【数据结构】(九)(二叉)树的逻辑,性质,存储结构_第8张图片
    【数据结构】(九)(二叉)树的逻辑,性质,存储结构_第9张图片
  3. 与线性表比较:
    【数据结构】(九)(二叉)树的逻辑,性质,存储结构_第10张图片
    (二)树的遍历:
    【数据结构】(九)(二叉)树的逻辑,性质,存储结构_第11张图片
  4. 前序遍历:
    【数据结构】(九)(二叉)树的逻辑,性质,存储结构_第12张图片
    2. 后序遍历:相当于从右向左写出前序遍历的树,写答案是时也是从左到右写
    【数据结构】(九)(二叉)树的逻辑,性质,存储结构_第13张图片
  5. 层序遍历:(从上到下,从左到右)
    【数据结构】(九)(二叉)树的逻辑,性质,存储结构_第14张图片
    (三)树的存储结构:

【数据结构】(九)(二叉)树的逻辑,性质,存储结构_第15张图片
1. 双亲表示法:
【数据结构】(九)(二叉)树的逻辑,性质,存储结构_第16张图片
【数据结构】(九)(二叉)树的逻辑,性质,存储结构_第17张图片
【数据结构】(九)(二叉)树的逻辑,性质,存储结构_第18张图片
重点:firstchild(此节点第一个孩子的节点),rightchild(此节点对应的紧邻的兄弟节点):(-1表示查无此人,结束)

  • 首先讲解创建:A~I输入表,之后找A的第一个孩子B(标号为1,填入),找A的兄弟节点(没有,填-1),然后找B孩子,和相邻兄弟,依次类推。
  • 查找链表(比如查早B的孩子):先找到B,对应找到第一个孩子D(标号为3),再找第一个孩子D的兄弟(兄弟E标号为4),在找E的兄弟,直到兄弟的数是-1,结束,找到所有孩子。

【数据结构】(九)(二叉)树的逻辑,性质,存储结构_第19张图片
2. 孩子链表表示法(树的度是几,就需要几个指针):
【数据结构】(九)(二叉)树的逻辑,性质,存储结构_第20张图片
设值最大度的指针,保证每个节点都有单独指针指向自己孩子,如图,B的三个指针分别指向自己孩子,A只有两个孩子,所以就要有一个指针为空。
【数据结构】(九)(二叉)树的逻辑,性质,存储结构_第21张图片
为了不浪费空间:(如下两图,改进方法==结构体多设一个位专门表示此节点的度,根据度来设置指针数)

缺点:结点结构不一致
【数据结构】(九)(二叉)树的逻辑,性质,存储结构_第22张图片
【数据结构】(九)(二叉)树的逻辑,性质,存储结构_第23张图片
3. 最终优化方案:
【数据结构】(九)(二叉)树的逻辑,性质,存储结构_第24张图片
【数据结构】(九)(二叉)树的逻辑,性质,存储结构_第25张图片
直接遍历查找孩子结点。

要找(比如I的)双亲结点的话:遍历找到的孩子结点为8的结点,在E哪一行找到,所以双亲为E(比较耗时,下面有优化)。
【数据结构】(九)(二叉)树的逻辑,性质,存储结构_第26张图片
优化双亲找法(多加一行记录双亲):
【数据结构】(九)(二叉)树的逻辑,性质,存储结构_第27张图片
4. 孩子兄弟表示法(向下找孩子,孩子向右找兄弟):
【数据结构】(九)(二叉)树的逻辑,性质,存储结构_第28张图片
【数据结构】(九)(二叉)树的逻辑,性质,存储结构_第29张图片
【数据结构】(九)(二叉)树的逻辑,性质,存储结构_第30张图片
(三)二叉树的逻辑存储结构:
【数据结构】(九)(二叉)树的逻辑,性质,存储结构_第31张图片
【数据结构】(九)(二叉)树的逻辑,性质,存储结构_第32张图片
【数据结构】(九)(二叉)树的逻辑,性质,存储结构_第33张图片
【数据结构】(九)(二叉)树的逻辑,性质,存储结构_第34张图片
【数据结构】(九)(二叉)树的逻辑,性质,存储结构_第35张图片
【数据结构】(九)(二叉)树的逻辑,性质,存储结构_第36张图片

【数据结构】(九)(二叉)树的逻辑,性质,存储结构_第37张图片
【数据结构】(九)(二叉)树的逻辑,性质,存储结构_第38张图片
【数据结构】(九)(二叉)树的逻辑,性质,存储结构_第39张图片
(四)二叉树的基本性质:

【数据结构】(九)(二叉)树的逻辑,性质,存储结构_第40张图片
【数据结构】(九)(二叉)树的逻辑,性质,存储结构_第41张图片
【数据结构】(九)(二叉)树的逻辑,性质,存储结构_第42张图片
**有分支进入的结点的集合叫做分支数:(除了根节点A之外,其余结点都有分支节点,所以n=B+1)**接下图
【数据结构】(九)(二叉)树的逻辑,性质,存储结构_第43张图片
最终得到五个式子:
【数据结构】(九)(二叉)树的逻辑,性质,存储结构_第44张图片
n0=n2+1;
在这里插入图片描述
【数据结构】(九)(二叉)树的逻辑,性质,存储结构_第45张图片
【数据结构】(九)(二叉)树的逻辑,性质,存储结构_第46张图片
【数据结构】(九)(二叉)树的逻辑,性质,存储结构_第47张图片
【数据结构】(九)(二叉)树的逻辑,性质,存储结构_第48张图片
【数据结构】(九)(二叉)树的逻辑,性质,存储结构_第49张图片
验证性质五:
【数据结构】(九)(二叉)树的逻辑,性质,存储结构_第50张图片
【数据结构】(九)(二叉)树的逻辑,性质,存储结构_第51张图片
(五)二叉树的存储结构

  1. 编号要补齐:
    【数据结构】(九)(二叉)树的逻辑,性质,存储结构_第52张图片
    存储:
    【数据结构】(九)(二叉)树的逻辑,性质,存储结构_第53张图片
    【数据结构】(九)(二叉)树的逻辑,性质,存储结构_第54张图片
    用二叉链表进行存储:
    【数据结构】(九)(二叉)树的逻辑,性质,存储结构_第55张图片
    【数据结构】(九)(二叉)树的逻辑,性质,存储结构_第56张图片
    回答:一共有n个结点,所以一共有2n个指针,由于边数=n-1;(除了根节点,每个节点都有一个边与其相连),所以空指针的个数==2n-(n-1)==n+1

  2. 如果要找双亲:
    【数据结构】(九)(二叉)树的逻辑,性质,存储结构_第57张图片
    【数据结构】(九)(二叉)树的逻辑,性质,存储结构_第58张图片
    静态优点:方便快捷节省空间。
    静态缺点:不适合频繁改动。

    【数据结构】(九)(二叉)树的逻辑,性质,存储结构_第59张图片

你可能感兴趣的:(数据结构,树,二叉树,数据结构,二(三)叉链表,树的存储结构)