《数据结构》课程教学资源:第五章 树形结构(2/2)

§5.62根据广义表表示创建树 ()二叉树的广义表表示 一棵以r为根的二叉树的广义表表示(广义表表达式)定义为如下形 式 (R) 其中,R可递归地定义为: a)若r空树,则R的形式为星号,即“*” b)若r是叶子,则R的形式为:rN c)若r是非叶子结点,则R的形式为:r(rL,rR) 其中,N为结点r的标识,工L和R分别为r的左右子树的广义表表示
1 §5.6.2 根据广义表表示创建树 (一)二叉树的广义表表示 一棵以r为根的二叉树的广义表表示(广义表表达式)定义为如下形 式: (R) 其中,R可递归地定义为: a) 若r空树,则R的形式为星号,即“*” ; b) 若r是叶子,则R的形式为:rN c) 若r是非叶子结点,则R的形式为:r(rL,rR) 其中,rN为结点r的标识,rL和rR分别为r的左右子树的广义表表示

§5.6.2根据广义表表示创建树 ()二叉树的广义表表示 广义表:(1(2(*4(5,*),3) 广义表:(1(*,3(24(5,*)) 图二叉树的广义表表示
2 §5.6.2 根据广义表表示创建树 (一)二叉树的广义表表示 1 2 3 4 5 3 1 2 4 5 广义表:(1(2(*,4(5,*)), 3)) 广义表:(1(*,3(2,4(5,*)))) 图 - 二叉树的广义表表示

§5.6.2根据广义表表示创建树 (二)广义表创建树的非递归算法 template TBin Tree Node0*TBin Tree GListToTree(long gList Exp, TElem*es, long numElem) TBinTreeNode*p, rt, **S; long top, 1; if(num Elem*InumElem+1 if(s==NULL) throw TExcepComm(3)
3 §5.6.2 根据广义表表示创建树 (二)广义表创建树的非递归算法 template TBinTreeNode0 *TBinTree:: GListToTree(long *gListExp, TElem *es, long numElem) { TBinTreeNode *p, *rt, **s; long top, i; if (numElem *[numElem+1]; if (s==NULL) throw TExcepComm(3);

p=new TBin TreeNode if (p-NULL) delete[ s throw TExcep Comm(3); top=0; Fl rt=p p->SetElem(&es[glist Expl Sl++top]=p
4 p = new TBinTreeNode; if (p==NULL) { delete [] s; throw TExcepComm(3); } top=0;i=1; rt = p; p->SetElem(&es[gListExp[i]]); s[++top] = p;

1++ if(gListExp-=( ) continue if( gListExp[]==’‖ gListExp[i]==)top-; if (gList Exp[]== )p=NULL; eise p=new TBin TreeNode if(p=-NULL) delete[ s throw TExcepComm(3) p->SetElem(&es[gListExpiD)
5 do{ i++ ; if (gListExp[i]=='(') continue ; if (gListExp[i]==',' || gListExp[i]==')') top-- ; else { if (gListExp[i]=='*') p = NULL ; else {p = new TBinTreeNode ; if (p==NULL) { delete [] s ; throw TExcepComm( 3 ) ; }p ->SetElem(&es[gListExp[i]]) ; }

if(gListExp1-1]==0) s[top]->SetSon(1, p); if(p!=NULL) p->SetFather(l, stop }e stop]->SetSon(2, p); if(p!=NULL) p->SetFather(2, s[top); Sl++top]=p s while(top!=0) deletes returner
6 if (gListExp[i - 1 ] == '(' ) { s[top] ->SetSon( 1 , p) ; if (p!=NULL) p ->SetFather( 1 , s[top]) ; } else { s[top] ->SetSon( 2 , p) ; if (p!=NULL) p ->SetFather( 2 , s[top]) ; } s[++top] = p ; }} while (top!= 0 ) ; delete [] s ; return rt ; }

§5.6.2根据广义表表示创建树 (三)广义表创建树的递归算法 二叉树广义表表达式,其表元素有三种: 空子树符号“*” 叶子结点符号(其后不带左圆括号) 子树的广义表表达式
7 §5.6.2 根据广义表表示创建树 (三)广义表创建树的递归算法 • 二叉树广义表表达式,其表元素有三种: –空子树符号“*” –叶子结点符号(其后不带左圆括号) –子树的广义表表达式

§5.6.2根据广义表表示创建树 三)广义表创建树的递归算法 在算法中,应分别考虑这三种情况,即先读出根结点名 称,为其申请一个树结点,然后读它的左右子树 若子树的根结点为“*”,则将根的相应链域置为空; 若子树的根结点为叶子,则为其分配一个树结点,并将根的相 应链域置为所分配结点的地址; 否则通过递归调用建立子树,然后将子树的根指针作为树的根 结点的相应链域的值
8 §5.6.2 根据广义表表示创建树 (三)广义表创建树的递归算法 • 在算法中,应分别考虑这三种情况,即先读出根结点名 称,为其申请一个树结点,然后读它的左右子树 –若子树的根结点为“*”,则将根的相应链域置为空; –若子树的根结点为叶子,则为其分配一个树结点,并将根的相 应链域置为所分配结点的地址; –否则通过递归调用建立子树,然后将子树的根指针作为树的根 结点的相应链域的值

§57二叉树的线索化 §5.71线索化的概念 线索化的目的 有时需知道二叉树结点在某种遍历方式下的前趋与后继。 棵具有n个结点的二叉树,有(nt1)个空链域(2no +n1),占总链域数目(2n)的1/2多 线索化 规定对任一结点,用空左链域存放它的前趋的指针 用空右链存放它的后继的指针 若某链域不空,则不存贮前趋与后继指针。 线索化 被线索化了的为线索邮
9 §5.7 二叉树的线索化 §5.7.1线索化的概念 • 线索化的目的 –有时需知道二叉树结点在某种遍历方式下的前趋与后继。 • 一棵具有n个结点的二叉树,有(n+1)个空链域(2n0 +n1 ),占总链域数目(2n)的1/2多 • 线索化 –规定对任一结点,用空左链域存放它的前趋的指针 –用空右链存放它的后继的指针 –若某链域不空,则不存贮前趋与后继指针。 线索化, 被线索化了的树为线索树

85.7.1线索化的概念 四种线索化方法和线索树: 前序线索化/树 中序线索化树 后序线索化/树 层序线索化/树 要分清是 哪种哦
10 §5.7.1线索化的概念 要分清是 哪种哦 • 四种线索化方法和线索树: –前序线索化/树 –中序线索化/树 –后序线索化/树 –层序线索化/树
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 《数据结构》课程教学资源:第五章 树形结构(1/2).ppt
- 《数据结构》课程教学资源:第四章 数组与十字链表.ppt
- 《数据结构》课程教学资源:第三章 特殊线性表一栈、队、串.ppt
- 《数据结构》课程教学资源:第二章 线性表.ppt
- 《数据结构》课程教学资源:第十章 排序算法.ppt
- 《数据结构》课程教学资源:第七章 广义表.ppt
- 《Visual Foxpro》第四章 表的基本操作.ppt
- 《Visual Foxpro》第十章 面向对象程序基础.ppt
- 《Visual Foxpro》第十四章 数据库应用系统开发.ppt
- 《Visual Foxpro》第十二章 菜单设计.ppt
- 《Visual Foxpro》第十三章 报表与标签设计.ppt
- 《Visual Foxpro》第十一章 表单设计与应用.ppt
- 《Visual Foxpro》第六章 SQL语言的应用.ppt
- 《Visual Foxpro》第八章 Visual FoxPro项目管理器.ppt
- 《Visual Foxpro》第五章 数据库的基本操作.ppt
- 《Visual Foxpro》第二章 Visual FoxPro操作基础.ppt
- 《Visual Foxpro》第九章 结构化程序设计.ppt
- 《Visual Foxpro》第三章 Visual FoxPro的数据及其运算.ppt
- 《Visual Foxpro》第七章 查询与视图设计.ppt
- 《Visual Foxpro》第一章 数据库系统基础知识.ppt
- 《数据结构》课程教学资源:第六章 图结构(6.1-6.5).ppt
- 《数据结构》课程教学资源:第六章 图结构(6.6-6.8).ppt
- 《数据结构》课程教学资源:第一章 概述.ppt
- 《数据结构》课程教学资源:第八章 检索结构.ppt
- 西北工业大学:《计算机系统结构》序论.ppt
- 西北工业大学:《计算机系统结构》第1章 计算机系统结构的基本.ppt
- 西北工业大学:《计算机系统结构》第2章 数据表示与指令系统.ppt
- 西北工业大学:《计算机系统结构》第3章 总线、中断与I/0系统.ppt
- 西北工业大学:《计算机系统结构》第4章 存贮体系.ppt
- 西北工业大学:《计算机系统结构》第3章 习题处理.ppt
- 西北工业大学:《计算机系统结构》第4章 直接映象及其变换.ppt
- 西北工业大学:《计算机系统结构》总复习.ppt
- 西北工业大学:《计算机系统结构》总复习及模拟试题.ppt
- 《Access数据库应用教程》教学资源(PPT课件讲稿)各章习题参考答案.ppt
- 《Access数据库应用教程》教学资源(PPT课件讲稿)第10章 Access模块和应用程序设计.ppt
- 《Access数据库应用教程》教学资源(PPT课件讲稿)第11章 Access数据库的管理.ppt
- 《Access数据库应用教程》教学资源(PPT课件讲稿)第12章 综合实例应用.ppt
- 《Access数据库应用教程》教学资源(PPT课件讲稿)第1章 数据库原理及基本概念.ppt
- 《Access数据库应用教程》教学资源(PPT课件讲稿)第2章 Access 2002应用基础.ppt
- 《Access数据库应用教程》教学资源(PPT课件讲稿)第3章 创建Access数据库.ppt