二叉树的遍历

来源:互联网 发布:手机禁止安装软件设置 编辑:程序博客网 时间:2024/05/16 11:48

二叉树的遍历

二叉树的遍历有三种方式,如下:

(1)前序遍历(DLR),首先访问根结点,然后遍历左子树,最后遍历右子树。简记根-左-右。

(2)中序遍历(LDR),首先遍历左子树,然后访问根结点,最后遍历右子树。简记左-根-右。

(3)后序遍历(LRD),首先遍历左子树,然后遍历右子树,最后访问根结点。简记左-右-根。 

 二叉树的遍历(一) - summer - VFP等级考试的天空 

例1:如上图所示的二叉树,若按前序遍历,则其输出序列为      。若按中序遍历,则其输出序列为      。若按后序遍历,则其输出序列为      。

前序:根A,A的左子树B,B的左子树没有,看右子树,为D,所以A-B-D。再来看A的右子树,根C,左子树E,E的左子树F,E的右子树G,G的左子树为H,没有了结束。连起来为C-E-F-G-H,最后结果为ABDCEFGH

中序:先访问根的左子树,B没有左子树,其有右子树D,D无左子树,下面访问树的根A,连起来是BDA。

再访问根的右子树,C的左子树的左子树是F,F的根E,E的右子树有左子树是H,再从H出发找到G,到此C的左子树结束,找到根C,无右子树,结束。连起来是FEHGC,  中序结果连起来是BDAFEHGC

后序:B无左子树,有右子树D,再到根B。再看右子树,最下面的左子树是F,其根的右子树的左子树是H,再到H的根G,再到G的根E,E的根C无右子树了,直接到C,这时再和B找它们其有的根A,所以连起来是DBFHGECA。

看起来比较麻烦,简单方法如下:

遍历序列

  1.遍历二叉树的执行踪迹

  三种递归遍历算法的搜索路线相同(如下图虚线所示)。

  具体线路为:

  从根结点出发,逆时针沿着二叉树外缘移动,对每个结点均途径三次,最后回到根结点。

  

  2.遍历序列

  (1) 中序序列

  中序遍历二叉树时,对结点的访问次序为中序序列

  【例】中序遍历上图所示的二叉树时,得到的中序序列为:

  D B A E C F

  (2) 先序序列

  先序遍历二叉树时,对结点的访问次序为先序序列

  【例】先序遍历上图所示的二叉树时,得到的先序序列为:

  A B D C E F

  (3) 后序序列

  后序遍历二叉树时,对结点的访问次序为后序序列

  【例】后序遍历上图所示的二叉树时,得到的后序序列为:

  D B E F C A

  注意:

  (1) 在搜索路线中,若访问结点均是第一次经过结点时进行的,则是前序遍历;若访问结点均是在第二次(或第三次)经过结点时进行的,则是中序遍历(或后序遍历)。只要将搜索路线上所有在第一次、第二次和第三次经过的结点分别列表,即可分别得到该

  二叉树的前序序列、中序序列和后序序列。

  (2) 上述三种序列都是线性序列,有且仅有一个开始结点和一个终端结点,其余结点都有且仅有一个前趋结点和一个后继结点。为了区别于树形结构中前趋(即双亲)结点和后继(即孩子)结点的概念,对上述三种线性序列,要在某结点的前趋和后继之前冠以

  其遍历次序名称。

  【例】上图所示的二叉树中结点C,其前序前趋结点是D,前序后继结点是E;中序前趋结点是E,中序后继结点是F;后序前趋结点是F,后序后继结点是A。但是就该树的逻辑结构而言,C的前趋结点是A,后继结点是E和F。

  二叉链表的构造

  1. 基本思想

  基于先序遍历的构造,即以二叉树的先序序列为输入构造。

  注意:

  先序序列中必须加入虚结点以示空指针的位置。

  【例】

  建立上图所示二叉树,其输入的先序序列是:ABD∮∮CE∮∮F∮∮。

  2. 构造算法

  假设虚结点输入时以空格字符表示,相应的构造算法为:

  void CreateBinTree (BinTree *T)

  { //构造二叉链表。T是指向根指针的指针,故修改*T就修改了实参(根指针)本身

  char ch;

  if((ch=getchar())=='') *T=NULL; //读人空格,将相应指针置空

  else{ //读人非空格

  *T=(BinTNode *)malloc(sizeof(BinTNode)); //生成结点

  (*T)->data=ch;

  CreateBinTree(&(*T)->lchild); //构造左子树

  CreateBinTree(&(*T)->rchild); //构造右子树

  }

  }

  注意:

  调用该算法时,应将待建立的二叉链表的根指针的地址作为实参。

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 存钱钱卡住了怎么办 办理身份证指纹录不上怎么办 手指没有指纹了怎么办 签了户口身份证怎么办 生了三胎户口怎么办 双户口注销学历怎么办 户口注销了社保怎么办 科一指纹录不上怎么办 右倒库右边太宽怎么办 手机录不了指纹怎么办 6sp指纹不灵敏怎么办 手指纹汗多怎么办? 手指没指纹怎么办身份证 青岛身份证丢了怎么办 新身份证没激活怎么办 坐轻轨没身份证怎么办 办身份证指纹录不上怎么办 指纹固化剂干了怎么办 指纹解锁没反应怎么办 荣耀v8指纹失灵怎么办 指纹多次不匹配怎么办 华为指纹被禁用怎么办 手脱皮没有指纹怎么办 手脱皮手机指纹怎么办 手脱皮录指纹怎么办 科二指纹打不上怎么办 三星手机无法解锁怎么办 iphone7指纹坏了怎么办 苹果8录不上指纹怎么办 手机套总是粘指纹怎么办 华为p9指纹禁用怎么办 华为p10升级失败怎么办 手机指纹锁没反应怎么办 华为手机指纹禁用怎么办 excel输入值非法怎么办 excel表数字乱码怎么办 excel表格打不开了怎么办 表格中数字乱码怎么办 手机颜色变了怎么办 身份证上的字母怎么办 身份证被盗用贷款怎么办