遍历二叉树

转载 2007年09月23日 01:28:00

 

<iframe style="WIDTH: 89.81%; HEIGHT: 64px" src="http://pagead2.googlesyndication.com/pagead/ads?client=ca-pub-4577827332549849&amp;dt=1192819750500&amp;lmt=1192819750&amp;prev_fmts=468x60_as&amp;format=468x15_0ads_al_s&amp;output=html&amp;correlator=1192819750437&amp;channel=1741427766&amp;pv_ch=1741427766%2B&amp;url=http%3A%2F%2Fyzkzoo.5d6d.com%2Fthread-68-1-1.html&amp;color_bg=FFFFFF&amp;color_text=000000&amp;color_link=0000FF&amp;color_url=008000&amp;color_border=336699&amp;ref=http%3A%2F%2Fyzkzoo.5d6d.com%2Fforum-16-1.html&amp;cc=100&amp;ga_vid=1025434795.1192631677&amp;ga_sid=1192817968&amp;ga_hid=1871659779&amp;ga_fc=true&amp;flash=8&amp;u_h=768&amp;u_w=1024&amp;u_ah=738&amp;u_aw=1024&amp;u_cd=32&amp;u_tz=480&amp;u_his=2&amp;u_java=true"></iframe>

<iframe style="WIDTH: 44.33%; HEIGHT: 259px" src="http://pagead2.googlesyndication.com/cpa/ads?client=ca-pub-4577827332549849&amp;cpa_choice=CAEaCB94-nvUZWENUB9QugJQtwRQTVAgULcCUB4&amp;oe=gb2312&amp;dt=1192720966468&amp;lmt=1192720966&amp;format=250x250_as&amp;output=html&amp;correlator=1192720966453&amp;channel=2735220158&amp;url=http%3A%2F%2Fyzkzoo.5d6d.com%2Fthread-67-1-1.html&amp;color_bg=FFFFFF&amp;color_text=000000&amp;color_link=0000FF&amp;color_url=008000&amp;color_border=336699&amp;ad_type=text_image&amp;region=_google_cpa_region_&amp;ref=http%3A%2F%2Fyzkzoo.5d6d.com%2Fforum-16-1.html&amp;cc=100&amp;ga_vid=1025434795.1192631677&amp;ga_sid=1192720940&amp;ga_hid=1155529757&amp;ga_fc=true&amp;flash=8&amp;u_h=768&amp;u_w=1024&amp;u_ah=738&amp;u_aw=1024&amp;u_cd=32&amp;u_tz=480&amp;u_his=2&amp;u_java=true"></iframe>一、复习二叉树的定义

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

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

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

先序 1 访问根结点
2 先序访问左子树
3 先序访问右子树
中序 1 中序访问左子树
2 中序访问根结点
3 中序访问右子树
后序 1 后序访问左子树
2 后序访问右子树
3 访问根结点

三、递归法遍历二叉树

先序:

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;

}

遍历结果:1,2,4,5,6,7,3

四、非递归法遍历二叉树

 

中序一:

Status InorderTraverse(BiTree T,Status(*Visit)(TElemType e)){

InitStack(S)ush(S,T);

while(!StackEmpty(S)){

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

Pop(S,p);

if(!StackEmpty(S)){

Pop(S,p); if(!Visit(p->data)) return ERROR;

Push(S,p->rchild);

}

}

return OK;

}

中序二:

Status InorderTraverse(BiTree T,Status(*Visit)(TElemType e)){

InitStack(S);p=T;

while(p||!StackEmpty(S)){

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

else{

Pop(S,p); if(!Visit(p->data)) return ERROR;

p=p->rchild);

}//else

}//while

return OK;

}

五、总结

二叉树遍历的意义

<iframe style="WIDTH: 52.39%; HEIGHT: 263px" src="http://pagead2.googlesyndication.com/cpa/ads?client=ca-pub-4577827332549849&amp;cpa_choice=CAEaCKcC4yuPlq5lUDRQDVAtUK4BUENQCA&amp;oe=gb2312&amp;dt=1192819388296&amp;lmt=1192819388&amp;format=300x250_as&amp;output=html&amp;correlator=1192819388281&amp;channel=2735220158&amp;url=http%3A%2F%2Fyzkzoo.5d6d.com%2Fviewthread.php%3Ftid%3D70%26page%3D1%26extra%3Dpage%253D1&amp;color_bg=FFFFFF&amp;color_text=000000&amp;color_link=0000FF&amp;color_url=008000&amp;color_border=336699&amp;ad_type=text_image&amp;region=_google_cpa_region_&amp;ref=http%3A%2F%2Fyzkzoo.5d6d.com%2Fpost.php%3Faction%3Dedit%26fid%3D16%26tid%3D70%26pid%3D70%26page%3D1%26extra%3Dpage%253D1&amp;cc=100&amp;ga_vid=1025434795.1192631677&amp;ga_sid=1192817968&amp;ga_hid=1527165455&amp;ga_fc=true&amp;flash=8&amp;u_h=768&amp;u_w=1024&amp;u_ah=738&amp;u_aw=1024&amp;u_cd=32&amp;u_tz=480&amp;u_his=5&amp;u_java=true"></iframe>

<iframe style="WIDTH: 82.23%; HEIGHT: 74px" src="http://pagead2.googlesyndication.com/pagead/ads?client=ca-pub-4577827332549849&amp;dt=1192818497343&amp;lmt=1192818497&amp;format=468x60_as&amp;output=html&amp;correlator=1192818497343&amp;channel=1741427766&amp;url=http%3A%2F%2Fyzkzoo.5d6d.com%2Fthread-68-1-1.html&amp;color_bg=FFFFFF&amp;color_text=000000&amp;color_link=0000FF&amp;color_url=008000&amp;color_border=336699&amp;ad_type=text_image&amp;ref=http%3A%2F%2Fyzkzoo.5d6d.com%2Fforumdisplay.php%3Ffid%3D16%26page%3D1&amp;ui=rc%3A6&amp;cc=100&amp;ga_vid=1025434795.1192631677&amp;ga_sid=1192817968&amp;ga_hid=1000484876&amp;ga_fc=true&amp;flash=8&amp;u_h=768&amp;u_w=1024&amp;u_ah=738&amp;u_aw=1024&amp;u_cd=32&amp;u_tz=480&amp;u_his=6&amp;u_java=true"></iframe>

<iframe style="WIDTH: 58.41%; HEIGHT: 156px" src="http://pagead2.googlesyndication.com/pagead/ads?client=ca-pub-4577827332549849&amp;dt=1192819750656&amp;lmt=1192819750&amp;prev_fmts=468x60_as%2C468x15_0ads_al_s%2C234x60_as&amp;format=200x90_0ads_al_s&amp;output=html&amp;correlator=1192819750437&amp;channel=1741427766&amp;pv_ch=1741427766%2B&amp;url=http%3A%2F%2Fyzkzoo.5d6d.com%2Fthread-68-1-1.html&amp;color_bg=FFFFFF&amp;color_text=000000&amp;color_link=0000FF&amp;color_url=008000&amp;color_border=336699&amp;ref=http%3A%2F%2Fyzkzoo.5d6d.com%2Fforum-16-1.html&amp;cc=100&amp;ga_vid=1025434795.1192631677&amp;ga_sid=1192817968&amp;ga_hid=1871659779&amp;ga_fc=true&amp;flash=8&amp;u_h=768&amp;u_w=1024&amp;u_ah=738&amp;u_aw=1024&amp;u_cd=32&amp;u_tz=480&amp;u_his=2&amp;u_java=true"></iframe> 

 

sdut oj3341 数据结构实验之二叉树二:遍历二叉树

题目链接:点击打开链接 数据结构实验之二叉树二:遍历二叉树 Time Limit: 1000MS Memory limit: 65536K 题目描述 已知二叉树的一个按...
  • Annfan123
  • Annfan123
  • 2016年08月08日 16:26
  • 418

二叉树学习之非递归遍历

二叉树递归遍历可谓是学过数据结构的同仁都能想一下就能写出来,但在应聘过程我们常常遇到的是写出一个二叉树非递归遍历函数,接着上篇文章写二叉树的非递归遍历,先难后易,一步一步的来.   先上代码: #...
  • callinglove
  • callinglove
  • 2014年11月02日 17:28
  • 1882

广度优先遍历二叉树(从上到下遍历二叉树)

问题描述:从上到下打印出二叉树的每个结点,同一层的结点按照从左到右的顺序打印。例如下图中的二叉树 ,则依次打印出8,6,10,5,7,9,11思路分析:按层打印的顺序决定了应该先打印根节点,所以我们从...
  • sinat_33442459
  • sinat_33442459
  • 2017年06月15日 14:40
  • 160

LeetCode 103. Binary Tree Zigzag Level Order Traversal(二叉树之字形遍历)

原题网址:https://leetcode.com/problems/binary-tree-zigzag-level-order-traversal/ Given a binary tre...
  • jmspan
  • jmspan
  • 2016年05月23日 03:58
  • 705

【算法导论】二叉树的前中后序非递归遍历实现

二叉树的非递归遍历
  • cyp331203
  • cyp331203
  • 2015年01月08日 20:47
  • 2152

二叉树遍历-php

转帖:http://hi.baidu.com/sungoogle/blog/item/fb7e08f4d2914a6fddc474cf.html// 树节点类class binaryTreeNode{...
  • sdts
  • sdts
  • 2007年08月10日 15:10
  • 1173

二叉树的前中后遍历

#include #include using namespace std; typedef struct BTtree { char ch; BTtree *l,*r; }; v...
  • dreamzuora
  • dreamzuora
  • 2016年11月14日 15:21
  • 165

简单二叉树的建立和遍历

C语言建立先序二叉树,然后分别用先序,中序,后序遍历输出该二叉树。
  • yanxiuhao
  • yanxiuhao
  • 2017年03月13日 13:47
  • 710

遍历二叉树

遍历二叉树有【前序遍历】,【中序遍历】已经【后续遍历】。当然了如果用递归的方式呢,几句就搞定了不过呢,因为递归都有个缺陷,就是如果树的深度太大的话,容易使栈溢出,所以得自己模拟栈来遍历就不会有这个问题...
  • danjia1234567891011
  • danjia1234567891011
  • 2013年11月16日 14:09
  • 608

遍历二叉树。

#include #include #include #include #define maxn 256 char s[maxn+10]; int failed;//read_input里面需要有一个...
  • u013165444
  • u013165444
  • 2014年02月11日 16:51
  • 495
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:遍历二叉树
举报原因:
原因补充:

(最多只允许输入30个字)