码迷,mamicode.com
首页 > 其他好文 > 详细

二叉树的三种遍历

时间:2017-11-22 14:22:00      阅读:114      评论:0      收藏:0      [点我收藏+]

标签:font   它的   16px   style   根据   str   bcd   中序   ==   

前言:搞懂非递归和递归三种遍历,二叉树的90%的问题算你全搞定了。

先序遍历:根,左子树,右子树

中序遍历:左子树,根,右子树

后序遍历:左子树,右子树,根

先序遍历序列的特点:ABCDEFGHIJK  A是树根,左子树可能是BCDEFGH右子树可能是IJK  对于B左子树可能是CD,右子树可能是EFGH。即,任一结点,它的右侧的一段元素依次是左子树,右子树。

中序遍历序列的特点:ABCDEFGHIJK   对任一结点,左侧一段是它的左子树,右侧一段是它的右子树。

后序遍历序列的特点:ABCDEFGHIJK  K是树根,对于任一结点,左侧一段结点,从左向右依次是左子树,右子树。

根据先序中序 或 后序中序 能还原一棵二叉树,根据 先序和后序 不能还原一棵二叉树。

递归遍历:

 24 /*先序递归遍历*/
 25 void DLR(BiTree *T) {
 26     if(*T != NULL) {
 27         printf("%c ",(*T)->data);
 28         DLR(&(*T)->lchild);
 29         DLR(&(*T)->rchild);
 30     }
 31 }
 32 /*中序递归遍历*/
 33 void LDR(BiTree *T) {
 34     if(*T != NULL) {
 35         LDR(&(*T)->lchild);
 36         printf("%c  ",(*T)->data);
 37         LDR(&(*T)->rchild);
 38     }
 39 }
 40 
 41 /*后序递归遍历*/
 42 void LRD(BiTree *T) {
 43     if(*T == NULL)
 44         return;
 45     LRD(&(*T)->lchild);
 46     LRD(&(*T)->rchild);
 47     printf("%c ",(*T)->data);
 48 }

非递归遍历

 

二叉树的三种遍历

标签:font   它的   16px   style   根据   str   bcd   中序   ==   

原文地址:http://www.cnblogs.com/joyeehe/p/7878698.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!