- 38
- 0
- 约1.3万字
- 约 13页
- 2017-06-28 发布于北京
- 举报
第六章 树 二叉树
后序遍历的非递归算法。
在对二叉树进行后序遍历的过程中,当指针p指向某一个结点时,不能马上对它进行
访问,而要先遍历它的左子树,因而要将此结点的地址进栈保存。当其左子树遍历完毕之
后,再次搜索到该结点时(该结点的地址通过退栈得到),还不能对它进行访问,还需要遍
历它的右子树,所以,再一次将此结点的地址进栈保存。为了区别同一结点的两次进栈,
引入一个标志变量nae,有 0 表示该结点暂不访问 1 表示该结点可以访问
标志flag的值随同进栈结点的地址一起进栈和出栈。因此,算法中设置两个空间足够的堆栈,其中,STACKlCM]存放进栈结点的地址,STACK2[M]存放相应的标志n昭的值,两个堆栈使用同一栈顶指针top,top的初值为—1。
具体算法如下:
#defineH 100 /●定义二叉树中结点最大数目。/
voidPOSTOiRDER(BTREET)
{
/*T为二叉树根结点所在链结点的地址。/
BTREESTACKl[H],p=T;
intSTACK2[M],flag,top=—1;
if(T!=NULL)
d0{
while(p!=NULL){
STACK/[++top]=p; /●当前p所指结点的地址进栈●/
STACK2[top]= 0; /,标志0进栈●/
p=p-lchild; /●将p移到其左孩子结点x/
}
p=STACKl[top);
flag=STACK2[top--];
if(flag==0){
STACKl[++top]=p; /,当前p所指结点的地址进栈。/
STACK2[toP]=1; /●标志1进栈●/
p=p-rchild; /x将p移到其右孩子结点o/
}
else{
VISIT(p); /x访问当前p所指的结点x/
p=NULL;
}
}while(p!=NULLtttop!=-1);
}
不难分析,上述算法的时间复杂度同样为O(n)
7.6.3 二叉树的线索化算法
对--X树的线索化,就是把二叉树的二叉链表存储结构中结点的所有空指针域改造成指向某结点在某种遍历序列中的直接前驱或直接后继的过程,因此,二叉树的线索化过程只能在对二叉树的遍历过程中进行。 ·
下面给出二叉树的中序线索化的递归算法。算法中设有指针pre,用来指向中序遍历过程中当前访问的结点的直接前驱结点,pre的初值为头结点的指针;T初始时指向头结点,但在算法执行过程中,T总是指向当前访问的结点。 voldINTHREAD(TBTREET) {
TBTREE pre;
if(T!=Null){
INTHREAD(T—lchild);
if(T—rchild==NULL)
T—rbit=0;
if(T—lchild==NUll);
T—lchild=pre;
T—lbit=0;
}
if(pre—rbitc==0)
pre—rchild=T;
pre=T;
inthread(T-rchild);
} }
平均查找长度(AverageSearchLength):确定一个元素在树中的位置所需要进行的比较次数的期望值。
二叉树的内路径长度(InternalPathLength):从二叉树根结点到某结点所经过的分支数目定义为该结点的路径长度。
二叉树中所有结点的路径长度之和定义为该二叉树的内路径长度IPL。图7。25(h)给出的二叉排序树的内路径长度为
IPL:1X2+2X2+3X1+4X2=17
二叉树的外路径长度(ExternalPathLength):为了分析查找失败时的查找长度,在二叉树中出现空子树时,增加新的空叶结点来代表这些空子树,从而得到一棵扩充后的二叉树。为了与扩充前的二叉树相区别,这些新增添的空的叶结点用小方块代表,称之为外部结点,树中原有的结点为内部结点。
图7.27给出了一棵扩充后的二叉树,其外路径长度EPL是二叉树中所有外部结点的路径长度之和,即
EPL=2X2+3X1+4X4+5X3十6X2=50
习 题
7.1 判断题(在你认为正确的题后的括号中打√,否则打X)。
(1)在树型结构中,每一个结点最多只有一个前驱结点,但可以有多个后继结点。 ( )
(2)在树型结构中,每—个
您可能关注的文档
- 第八章 广东省自主创新政策法规巡讲专题之一.ppt
- 浅析成安渝高速公路(资阳段).doc
- 第八章 国家开发银行生源地助学贷款学生在线服务系统毕业确认操作.doc
- 第六章 房地产法律规定涉及房地产开发用地、房地产开发、房地产.ppt
- 腰椎间盘突出症的知识.ppt
- 第二讲理想市场评判标准、市场失灵.ppt
- 国内上市审查实务应注意事项资料.ppt
- 第八章 桂阳县物价局.doc
- 第十一章 继电保护原理.ppt
- 上次课复习固体表面吸附;物理吸附向化学吸附转变;.doc
- 安徽省华师联盟2025-2026学年高三上学期1月质量检测生物试卷+答案.doc
- 安徽省华师联盟2025-2026学年高三上学期1月质量检测语文试卷+答案.doc
- 四川省绵阳南山中学实验学校2025-2026学年高三上学期1月月考数学含答案.doc
- 2026届辽宁省大连市高三上学期双基考试物理试卷+答案.doc
- 辽宁名校联盟2026年1月高三上期末联考质量检测化学含答案.doc
- 辽宁名校联盟2026年1月高三上期末联考质量检测生物含答案.doc
- 辽宁名校联盟2026年1月高三上期末联考质量检测英语含答案.doc
- 辽宁名校联盟2026年1月高三上期末联考质量检测政治含答案.doc
- 黑龙江省龙江教育联盟2026年1月高三上学期期末考试化学含答案.doc
- 黑龙江省龙江教育联盟2026年1月高三上学期期末考试生物含答案.doc
原创力文档

文档评论(0)