数据结构4树与二叉树.ppt
《数据结构4树与二叉树.ppt》由会员分享,可在线阅读,更多相关《数据结构4树与二叉树.ppt(22页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第6 6章章 树和二叉树树和二叉树 线索二叉树(线索二叉树(Threaded Binary)-+/-a*cdefb一棵具有一棵具有n个结点二叉树,用二叉链表表示时,树中存在个结点二叉树,用二叉链表表示时,树中存在空指针域的个数为:空指针域的个数为:n+1利用空指针域指向结点的前驱或后继利用空指针域指向结点的前驱或后继结点结构结点结构lchildrchildltagdatartag其中:其中:ltag=0 lchild指向结点的左孩子指向结点的左孩子 ltag=1 lchild指向结点的前驱指向结点的前驱 rtag=0 rchild指向结点的右孩子指向结点的右孩子 rtag=1 rchild指
2、向结点的后继指向结点的后继 以这种结构构成的二叉链表叫线索链表,其中指以这种结构构成的二叉链表叫线索链表,其中指向前驱和后继的指针称作线索,加上线索的二叉树成向前驱和后继的指针称作线索,加上线索的二叉树成为线索二叉树。为线索二叉树。二叉树的二叉线索存储表示二叉树的二叉线索存储表示Typedef enum Link,Thread PointerTag;Typedef struct BiThrNode TElemType data;struct BiThrNode *lchild,*rchild;PointerTag LTag,RTag;BiThrNode,*BiThrTree;-+/-a*cde
3、fb01-00+00/00e11a11*00f11b11-00c11d11thrtbt例如:例如:中序序列:中序序列:a+b*c-d-e/fStatus InOrderTraverse_Thr(BiThrTree T,Status(*Visit)(TElemType e)P=T-lchild;while(p!=T)while(p-LTag=Link)p=p-lchild;if(!Visit(p-data)return ERROR;while(p-RTag=Thread&p-rchild!=T)p=p-rchild;Visit(p-data);p=p-rchild;return OK中序序列:中
4、序序列:a+b*c-d-e/f01-00+00/00e11a11*00f11b11-00c11d11thrtbt线索化二叉树线索化二叉树01thrt空线索化二叉树空线索化二叉树Status InOrderThreading(BiThrTree&Thrt,BiThrTree T)if(!(Thrt=(BiThrTree)malloc(sizeof(BithrNode)exit(OVERFLOW);Thrt-LTag=Link;Thrt-Rtag=Thread;Thrt-rchild=Thrt;if(!T)Thrt-lchild=Thrt;else Thrt-lchild=T;pre=Thrt;I
5、nThreading(T);pre-rchild=Thrt;pre-RTag=Thread;Thrt-rchild=pre;return OKvoid InThreading(BiThrTree p)if(p)InThreading(p-lchild);if(!p-lchild)p-LTag=Thread;p-lchild=pre;if(!pre-rchild)pre-RTag=Thread;pre-rchild=p;pre=p;InThreading(p-rchild);01-00+00/00e11a11*00f11b11-00c11d11thrtbt例:求中序线索树中给定结点的后继结点例:
6、求中序线索树中给定结点的后继结点BiThrTree inordernext(BiThrTree p)if(p-RTag=Thread)return(p-rchild);else q=p-rchild;while(q-LTag=Link)q=q-lchild;return(q);6.6 赫夫曼赫夫曼(Huffman)树及其应用树及其应用一、赫夫曼一、赫夫曼(Huffman)树树-最优最优树树l路径:从树中一个结点到另一个结点之间的分支构成这路径:从树中一个结点到另一个结点之间的分支构成这 两个结点间的路径两个结点间的路径l路径路径长度:路径上的分支数长度:路径上的分支数l树的路径长度:从树根到每
7、一个结点的路径长度之和树的路径长度:从树根到每一个结点的路径长度之和l结点的带权路径结点的带权路径长度:长度:该结点到根的路径长度与结点上权的乘积。该结点到根的路径长度与结点上权的乘积。l树的带权路径树的带权路径长度:树中所有叶子结点的带权路径长度之和。长度:树中所有叶子结点的带权路径长度之和。n记作:记作:wpl=wklk k=1定义:给定一组权定义:给定一组权w1 w2 wn,且且w1 w2 wn,设有一个二叉树,共有设有一个二叉树,共有n片叶子,分别带权片叶子,分别带权w1 w2 wn,该,该二叉树称为带权二叉树。二叉树称为带权二叉树。最优二叉树或最优二叉树或Huffman树树设有设有n
8、个权值个权值w1 w2 wn,构造一棵有构造一棵有n个叶子结点的二叉树,每个叶子的个叶子结点的二叉树,每个叶子的权值为权值为wi,则则wpl最小的最小的那棵那棵二叉树叫二叉树叫最优二叉树或最优二叉树或Huffman树树.例有例有4 4个结点个结点,权值分别为权值分别为7,5,2,4,7,5,2,4,构造有构造有4 4个叶子结点的二叉树个叶子结点的二叉树abcd7524(1)WPL=7*2+5*2+2*2+4*2=36dcab2475(2)WPL=4*2+7*3+5*3+2*1=46abcd7524(3)WPL=7*1+5*2+2*3+4*3=35例:将百分制成绩转换成例:将百分制成绩转换成5
9、5级分制成绩级分制成绩if(a60)b=“bad”;else if(a70)b=“pass”;else if(a80)b=“general”;else if(a90)b=“good”;else b=“excellent”分数分数 比例比例 0-59 60-69 70-79 80-89 90-100 0.05 0.15 0.40 0.30 0.10a80a70a60a90不及格不及格及格及格中等中等良好良好优秀优秀YYYYNNNN设有设有10000个记录个记录需需31500次比较次比较需需22000次比较次比较定理:定理:u设设T为带权为带权w1 w2 wn 的最优树的最优树 则则 a)带权带权
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 二叉
限制150内