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

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

时间:2018-11-17 16:05:16      阅读:157      评论:0      收藏:0      [点我收藏+]

标签:后序遍历   strong   pos   二叉树   图片   bsp   直接   tree   存储结构   

  [前文]

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

  如下图所示的二叉树:

    技术分享图片

  前序遍历顺序为: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 }

  运行结果:

  技术分享图片

  

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

标签:后序遍历   strong   pos   二叉树   图片   bsp   直接   tree   存储结构   

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

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