首页 > 其他 > 详细

二叉树的递归遍历(先序、中序和后序)

时间:2018-11-17 15:32:01      阅读:171      评论:0      收藏:0      [点我收藏+]

  [前文]

  二叉树的递归遍历包括 先序遍历、中序遍历 和 后续遍历

  如下图所示的二叉树:

    技术分享图片

  前序遍历顺序为:ABCDE  (先访问根节点,然后先序遍历其左子树,最后先序遍历其右子树)

  中序遍历顺序为:CBDAE  (先中序遍历其左子树,然后访问很节点,最后中序遍历其右子树)

  后续遍历顺序为:CDBEA  (先后序遍历其左子树,然后后续其右子树,最后访问根节点)

 

  不多说,直接上代码。

  

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 
 4 // 二叉树的存储结构 
 5 typedef char ElementType;
 6 typedef struct TreeNode *PtrToNode;
 7 struct TreeNode {
 8     ElementType Data;
 9     PtrToNode Left;
10     PtrToNode Right;
11 };
12 typedef PtrToNode BinTree;
13 
14 BinTree CreateBinTree(BinTree T);
15 void PreOrderTraverse(BinTree T);
16 void InOrderTraverse(BinTree T);
17 void PostOrderTraverse(BinTree T);
18 
19 int main()
20 {
21     BinTree T;
22     T = CreateBinTree(T);
23     
24     printf("PreOrderTraverse: \n");
25     PreOrderTraverse(T);
26     printf("\n");
27     
28     printf("InOrderTraverse: \n");
29     InOrderTraverse(T);
30     printf("\n");
31     
32     printf("PostOrderTraverse: \n");
33     PostOrderTraverse(T);
34     printf("\n");
35     
36     return 0;
37 }
38 // 建立二叉树  
39 BinTree CreateBinTree(BinTree T)
40 {
41     char c;
42     scanf("%c", &c);
43     if ( c != # ) {
44         T = (BinTree)malloc(sizeof(struct TreeNode));
45         T->Data = c;
46         T->Left = CreateBinTree(T->Left);
47         T->Right = CreateBinTree(T->Right);
48     } else {
49         T = NULL;
50     }
51     return T;
52 }
53 // 先序遍历 
54 void PostOrderTraverse(BinTree T)
55 {
56     if ( T ) {
57         PostOrderTraverse(T->Left);
58         PostOrderTraverse(T->Right);
59         printf("%c ", T->Data)
60 ;    }
61 }
62 // 中序遍历 
63 void InOrderTraverse(BinTree T)
64 {
65     if ( T ) {
66         InOrderTraverse(T->Left);
67         printf("%c ", T->Data);
68         InOrderTraverse(T->Right);
69     }
70 }
71 // 后序遍历 
72 void PreOrderTraverse(BinTree T)
73 {
74     if ( T ) {
75         printf("%c ", T->Data);
76         PreOrderTraverse(T->Left);
77         PreOrderTraverse(T->Right);
78     }
79 }

  运行结果:

  技术分享图片

  

二叉树的递归遍历(先序、中序和后序)

原文:https://www.cnblogs.com/wgxi/p/9973749.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!