二叉树的创建,和三种递归遍历方式

Posted hi3254014978

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二叉树的创建,和三种递归遍历方式相关的知识,希望对你有一定的参考价值。

在运行窗口输入:

 A B D # # F E # # # C G # H # # I # #
 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 
 4 typedef char ElementType;
 5 typedef struct TNode *Position;
 6 typedef Position BinTree;    //二叉树类型
 7 struct TNode {
 8     ElementType Data;    //结点数据
 9     BinTree Left;        //指向左子树
10     BinTree Right;        //指向右子树
11 };
12 
13 void printBinTree(BinTree BT, int Depth);
14 
15 
16 BinTree CreateBinaryTree(BinTree BT)
17 {
18     char dt;
19     //printf("please enter a character: ");
20     scanf_s("%c", &dt);
21     getchar();
22     if (dt == #)
23         return NULL;
24     else
25     {
26         if (!BT)
27         BT = (BinTree)malloc(sizeof(struct TNode));
28         BT->Data = dt;
29         BT->Left = NULL;
30         BT->Right = NULL;
31         //printf("please enter the left son of %c: ", dt);
32         BT->Left = CreateBinaryTree(BT->Left);
33         //printf("please enter the right son of %c: ", dt);
34         BT->Right = CreateBinaryTree(BT->Right);
35         return BT;
36     }
37     
38 }
39 
40 
41 
42 void InorderTraversal(BinTree BT, int Depth)
43 {
44     if (BT)
45     {
46         printBinTree(BT, Depth);
47         InorderTraversal(BT->Left, Depth + 1);
48         InorderTraversal(BT->Right, Depth + 1);
49         
50         //printf("%c", BT->Data);
51         
52     }
53 }
54 
55 void printBinTree(BinTree BT, int Depth)
56 {
57     for (int i = 0; i < Depth; i++)
58         printf("  ");
59     printf("%c
", BT->Data);
60 }
61 
62 int main()
63 {
64     BinTree BT = (BinTree)malloc(sizeof(struct TNode));
65     BT = CreateBinaryTree(BT);
66     InorderTraversal(BT, 0);
67 }

 

以上是关于二叉树的创建,和三种递归遍历方式的主要内容,如果未能解决你的问题,请参考以下文章

二叉树的三种非递归遍历方式(附Cjava源码)

基于Java的二叉树的三种遍历方式的递归与非递归实现

二叉树的建立和三种遍历

二叉树的遍历

二叉树的Morris遍历算法

二叉树的三种非递归遍历方式