数据结构教程第二十四课遍历二叉树

数据结构教程第二十四课遍历二叉树,第1张

数据结构教程第二十四课遍历二叉树,第2张

教学目的:掌握三种遍历二叉树的方法。

教学重点:二叉树的遍历算法

教学难点:中序和逆序遍历的非递归算法

教学内容:

首先,回顾二叉树的定义

二叉树由三个基本单元组成:根节点、左子树和右子树。

问题:如何不重复地访问二叉树中的每一个节点?

二、遍历二叉树的三种方法:

先访问根节点
2先访问左子树
3先访问右子树
,先访问左子树
2中间访问根节点
3中间访问右子树
,第二次访问左子树

3.二叉树的递归遍历

一阶:

Status(preorder traverse(BiTree T,Status(* Visit)(teletype)){

如果(T){

如果(访问(T->数据))

if(PreOrderTraverse(t->lchild,Visit))

if(PreOrderTraverse(T->rchild,Visit))返回OK;

返回错误;

}else返回OK;

}四。用非递归方法遍历二叉树

中间序列一:

Status InorderTraverse(BiTree T,Status(* Visit)(tele type e)){

InitStackPush(S,T);

而(!堆栈属性){

while(GetTop(S,p)&&p)Push(S,p-> l child);

Pop(S,p);

如果(!堆栈属性){

Pop(S,p);如果(!Visit(p->data))返回错误;

Push(S,p-> rchild);

}

}

退货OK;

}

序列中的第二个:

Status InorderTraverse(BiTree T,Status(* Visit)(tele type e)){

InitStackp = T;

while(p||!堆栈属性){

if(p){Push(S,p);p = p-> l child;}

否则{

Pop(S,p);如果(!Visit(p->data))返回错误;

p = p-> rchild);

}//否则

}//当

退货OK;

}

动词 (verb的缩写)摘要

二叉树遍历的意义


位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » 数据结构教程第二十四课遍历二叉树

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情