C 语言的二叉树遍历
最编程
2024-03-31 17:56:12
...
二叉树作为FDS课程最核心的数据结构之一,要求每个人都掌握!
这是一道简单的二叉树问题!
我们将给出一颗二叉树,请你输出它的三种遍历,分别是先序遍历,中序遍历,后序遍历!
输入格式:
二叉树将以这样的形式给出:
第一行给出一个正整数N(N<=100),表示二叉树上的节点个数!
接下来N行,每行包含三个整数,i,l,r,分别代表第i个节点的左右孩子!
如果它的左/右孩子为空,则在对应位置给出-1!
题目保证1是根节点!
输出格式:
请你输出它的三种遍历!
第一行输出先序遍历,第二行输出中序遍历,第三行输出后序遍历!
每行末尾无多余空格!
输入样例:
在这里给出一组输入。例如:
3
1 2 3
2 -1 -1
3 -1 -1
输出样例:
在这里给出相应的输出。例如:
1 2 3
2 1 3
2 3 1
#include <stdio.h>
#include <stdlib.h>
typedef int Elementyple;
typedef struct TNode* BiTree;
typedef struct TNode{
Elementyple Data;
struct TNode* Left;
struct TNode* Right;
}tnode;
int N;
BiTree createNode() {
BiTree node = new TNode;
node->Left = NULL;
node->Right = NULL;
return node;
}
BiTree CreaTree(int number[10000][15],int x){
if(x==-1)
return NULL;
BiTree BT;
// BT=(BiTree)malloc(sizeof(struct TNode));
BT=createNode();
BT->Data=x;
BT->Left=CreaTree(number,number[x][0]);
BT->Right=CreaTree(number,number[x][1]);
return BT;
}
int flag=0;
void PreorderTraversal( BiTree BT ){
if(BT){
flag++;
if(flag==N)
printf("%d",BT->Data);
else
printf("%d ",BT->Data);
PreorderTraversal(BT->Left);
PreorderTraversal(BT->Right);
}
}
void InorderTraversal( BiTree BT){
if(BT){
InorderTraversal(BT->Left);
flag++;
if(flag==2*N)
printf("%d",BT->Data);
else
printf("%d ",BT->Data);
InorderTraversal(BT->Right);
}
}
void PostorderTraversal( BiTree BT ){
if(BT){
PostorderTraversal(BT->Left);
PostorderTraversal(BT->Right);
flag++;
if(flag==3*N)
printf("%d",BT->Data);
else
printf("%d ",BT->Data);
}
}
int main(){
int i,a[10000][15],b[10000];
scanf("%d",&N);
for(i=1;i<=N;i++){
scanf("%d%d%d",&b[i],&a[i][0],&a[i][1]);
}
BiTree BT;
BT=CreaTree(a,1);
PreorderTraversal(BT);
printf("\n");
InorderTraversal(BT);
printf("\n");
PostorderTraversal(BT);
}
推荐阅读
-
C 语言知识点的完美总结
-
C语言的10种基本算法,学习C语言必须要有源代码(珍藏版)
-
初级 C 语言评估问题:测试您的基础知识和编程技能!-多选题
-
C 语言中的循环圈
-
C++STL 开发复习与总结(六): 6. C++ 语言输入/输出流 输入/输出格式的定义 控制-2-1 枚举常量(在 ios 类中)
-
用 C 语言求阶乘之和的三种实现方法(先求阶乘再求加法)
-
c 语言 4-7 编写一个程序,显示所有小于输入整数的 2 的乘法运算。
-
ArrayList 的 C 语言实现(线性表顺序存储结构)
-
c 语言字节和比特结构冒号的含义,结构成员值的写入和读取
-
[计算机基础] 简明扼要地解释高字节和低字节 I. 简要解释 II.高字节和低字节在 C 语言中的含义 III.16 位和 32 位数字的存储