中国高校课件下载中心 》 教学资源 》 大学文库

浙江大学:《数据结构与算法》第六章(6-3) 遍历二叉树和线索二叉树

文档信息
资源类别:文库
文档格式:PPT
文档页数:24
文件大小:153KB
团购合买:点击进入团购
内容简介
6.3.1遍历二叉树 如果按某条搜索路径巡访树中每个结点,使得每个结点均被访问一次,而且仅被访问一次。
刷新页面文档预览

63遍历二叉树和线索二叉树 63.1遍历二叉树 如果按某条搜索路径巡 访树中每个结点,使得 每个结点均被访问一次, 而且仅被访问一次

6.3遍历二叉树和线索二叉树 6.3.1遍历二叉树 如果按某条搜索路径巡 访树中每个结点,使得 每个结点均被访问一次, 而且仅被访问一次。 A B C D G E F

先序遍历二叉树的操作定义为: 若二叉树为空,则空操作; 否贝 A (1)访问根结点; (2)先序遍历左子树; B E (3)先序遍历右子树 DG ABCDFEG F

先序遍历二叉树的操作定义为: 若二叉树为空,则空操作; 否则 (1)访问根结点; (2)先序遍历左子树; (3)先序遍历右子树。 A B C D F E G A B C D G E F

先序遍历二叉树的递归算法 Status PreOrder Traverse(BiTree T, Status(* Visit)(TElem Type e)i if(T)i if (Visit(T->data)) if (PreOrder Traverse(T->lchild, Visit)) if(PreOrder Traverse(T->rchild, Visit) return OK return error. felse return OK 3//PreOrder Traverse

先序遍历二叉树的递归算法 Status PreOrderTraverse(BiTree T, Status(* Visit)(TElemType e)){ if (T){ if (Visit(T->data)) if (PreOrderTraverse(T->lchild,Visit)) if (PreOrderTraverse(T->rchild,Visit)) return OK; return ERROR; }else return OK; }//PreOrderTraverse

中序遍历二叉树的操作定义为: 若二叉树为空,则空操作; 否贝 A (1)中序遍历左子树; B E (2)访问根结点; (3)中序遍历右子树 DG CBDFAG E F

中序遍历二叉树的操作定义为: 若二叉树为空,则空操作; 否则 (1)中序遍历左子树; (2)访问根结点; (3)中序遍历右子树。 C B D F A G E A B C D G E F

中序遍历二叉树示例 中序遍历二叉树得 a+b米(C-d)-e/f

中序遍历二叉树示例 中序遍历二叉树得: a+b*(c-d)-e/f - + a * e / - f b c d

中序遍历二叉树的递归算法 Status In Order Traverse(BiTree T, Status( Visit) (TElem Type e) if(T)i if(InOrder Traverse(T->lchild, Visit)) if (Visit(T->data)) if(InOrder Traverse(T->rchild, Visit)) return OK return ErroR Else return OK /nOrder Traverse

中序遍历二叉树的递归算法 Status InOrderTraverse(BiTree T, Status(* Visit)(TElemType e)){ if (T){ if (InOrderTraverse(T->lchild,Visit)) if (Visit(T->data)) if (InOrderTraverse(T->rchild,Visit)) return OK; return ERROR; }else return OK; }//InOrderTraverse

后序遍历二叉树的操作定义为: 若二叉树为空,则空操作; 否贝 A (1)后序遍历左子树; (2)后序遍历右子树; B E (3)访问根结点。 DG CFDBGEA F

后序遍历二叉树的操作定义为: 若二叉树为空,则空操作; 否则 (1)后序遍历左子树; (2)后序遍历右子树; (3)访问根结点。 C F D B G E A A B C D G E F

后序遍历二叉树的递归算法 Status PostOrder Traverse(BiTree T, Status(= Visit )(TElem Type e))i if(T)i if (PostOrder Traverse(T->lchild, Visit) if(PostOrder Traverse(T->rchild, Visit) if( Visit(T->data)) return OK; return ErRoR Else return OK 3//PostOrder Traverse

后序遍历二叉树的递归算法 Status PostOrderTraverse(BiTree T, Status(* Visit)(TElemType e)){ if (T){ if (PostOrderTraverse(T->lchild,Visit)) if (PostOrderTraverse(T->rchild,Visit)) if (Visit(T->data)) return OK; return ERROR; }else return OK; }//PostOrderTraverse

中序遍历二叉树的非递归算法 Status InOrder Traverse(BiTree T, status(* Visit TElem Type e)i InitStack(S); Push(S,T) while(!Stack Empty(s)i while( GetTop(s,p)&& p)Push(s, p->lchild) Pop(s, p) if ( StackEmpty(s)& Pop(S, p); if(! Visite(p->data)) return ERROR Push(s, p->rchild) 1) return OK )//nOrder Traverse

中序遍历二叉树的非递归算法 Status InOrderTraverse(BiTree T, Status(* Visit) (TElemType e)){ InitStack(S); Push(S,T); while(!StackEmpty(S)){ while(GetTop(S,p) && p)Push(S,p->lchild); Pop(S, p); if (!StackEmpty(S)){ Pop(S,p); if (!Visite(p->data)) return ERROR; Push(S,p->rchild); } } return OK; }//InOrderTraverse

中序遍历二叉树的非递归算法 示意图 A Pop Get Top<--NULL B E p p C—B—A—S DG A F CBDFA CBDFAGE

中序遍历二叉树的非递归算法 示意图 C B D F A G E A B C D G E F A B C NULL S GetTop<-- p A S Pop p C B D F A

共24页,试读已结束,阅读完整版请下载
刷新页面下载完整文档
VIP每日下载上限内不扣除下载券和下载次数;
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
相关文档