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

  [前文]

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

  如下图所示的二叉树:

    

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

  运行结果:

  

  

猜你喜欢

转载自www.cnblogs.com/wgxi/p/9973749.html