数据结构教程第二十四课遍历二叉树
教学目的:掌握三种遍历二叉树的方法。
教学重点:二叉树的遍历算法
教学难点:中序和逆序遍历的非递归算法
教学内容:
首先,回顾二叉树的定义
二叉树由三个基本单元组成:根节点、左子树和右子树。
问题:如何不重复地访问二叉树中的每一个节点?
二、遍历二叉树的三种方法:
先访问根节点
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的缩写)摘要
二叉树遍历的意义
0条评论