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

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

在运行窗口输入:

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\n", 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 }


相关文章
|
JavaScript
52 # 二叉树的前中后遍历
52 # 二叉树的前中后遍历
41 0
|
存储 算法
二叉树的创建和遍历
二叉树(Binary tree)是树形结构的一个重要类型。许多实际问题抽象出来的数据结构往往是二叉树形式,即使是一般的树也能简单地转换为二叉树,而且二叉树的存储结构及其算法都较为简单,因此二叉树显得特别重要。二叉树特点是每个节点最多只能有两棵子树,且有左右之分
106 0
|
机器学习/深度学习 C++ 容器
C++实现的二叉树创建和遍历,超入门邻家小女也懂了
C++实现的二叉树创建和遍历,超入门邻家小女也懂了
110 0
|
机器学习/深度学习 C++ 容器
二叉树创建和遍历(C++实现)
树(Tree)是n(n≥0)个节点的有限集。在任意一棵树中有且仅有一个特定的称为根(Root)的节点;当n>1时,其余节点可分m(m>0)为个互不相交的有限集T1,T2,...,Tm;其中每一个集合本身又是一棵树,并且称为根的子树(SubTree)。 二叉树(Binary Tree)是一种特殊的有序树型结构,所有节点最多只有2棵子树。
743 0
|
存储 编译器
二叉树的递归遍历与迭代遍历(图示)
本文将讲述二叉树递归与迭代的相关知识。
144 0
二叉树的三种遍历方式
二叉树的三种遍历方式
273 0
二叉树的三种遍历方式
|
Java 测试技术
给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。(Java语言实现)
给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。(Java语言实现)
187 0
给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。(Java语言实现)
二叉树的创建,遍历完整代码
二叉树的创建,遍历完整代码
二叉树的三种遍历方式,含demo(递归与非递归)
前置知识: 什么是二叉树:一个递归的树形数据结构,每个节点最多有两个子节点;二叉树一般都是二分查找树,每个节点的值大于它左子节点的值,小于它右子节点的值
14779 0
二叉树的三种遍历方式,含demo(递归与非递归)