请你输出它的三种遍历!
第一行输出先序遍历,第二行输出中序遍历,第三行输出后序遍历!
每行末尾无多余空格!
输入样例:
在这里给出一组输入。例如:
3
1 2 3
2 -1 -1
3 -1 -1
输出样例:
在这里给出相应的输出。例如:
1 2 3
2 1 3
2 3 1
思路:利用递归建树 然后 遍历 本题受刺激最大 有些人 人家 用4 行代码 就建成树了 而我用了这么多 花了好长时间 听软工老师的话感触最深 每个人都是从写垃圾码写过来的 加油 陌生人 今天 5月九号 分手了
#include<bits/stdc++.h>
using namespace std;
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;
//如果每层都定义一个flag=0的话那么每次递归的时候 flag都是从0开始 无法达到flag++de 效果
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)