通过带空指针信息的先根序列(亦称先序序列)创建二叉树,并进行先根(先序)、中根(中序)、后根(后序)遍历。二叉树结点数据域值为不等于0的整数,空指针用0表示,例如1 5 8 0 0 0 6 0 0表示如下图的二叉树。
(石子是我的个人知乎。)
代码如下:
//创建二叉树和三种遍历,输入序列如 1 5 8 0 0 0 6 0 0
#include <stdio.h>
struct Node{
int data;
Node* left;
Node* right;
};
void create(Node* &T){
int x;
scanf("%d",&x);
if(x==0){
T = NULL;
return;
}
T = new Node;
T->data = x;
T->left = T->right = NULL;
create(T->left);
create(T->right);
}
void preOrder(Node * T){
if(T==NULL)
return;
printf("%d ",T->data);
preOrder(T->left);
preOrder(T->right);
}
void midOrder(Node * T){
if(T==NULL)
return;
midOrder(T->left);
printf("%d ",T->data);
midOrder(T->right);
}
void postOrder(Node * T){
if(T==NULL)
return;
postOrder(T->left);
postOrder(T->right);
printf("%d ",T->data);
}
int main(){
Node* root = new Node;
create(root);
preOrder(root);
printf("\n");
midOrder(root);
printf("\n");
postOrder(root);
return 0;
}