根据扩展后的先序序列创建二叉树并进行三种常见遍历
注意的点:
1.构建二叉树时运用了C++中的引用,有点像地址,不需要返回值就可以直接修改实际参数的值,从而为创建的那个节点加入左右孩子。
2.遍历时首先要判断是不是NULL节点,再进行后续操作。
#include<iostream>
#include<stdlib.h>
using namespace std;
typedef struct BiNode{
int data;
struct BiNode *lchild,*rchild;
}BiNode,*BiTree;
void create(BiTree &T){
int num;
cin>>num;
if(num==0){
T=NULL;
}else{
T=(BiTree)malloc(sizeof(BiNode));
T->data=num;
create(T->lchild);
create(T->rchild);
}
}
void preOrderTraverse(BiTree &T){
if(T==NULL) return;
cout<<T->data<<" ";
preOrderTraverse(T->lchild);
preOrderTraverse(T->rchild);
}
void inOrderTraverse(BiTree &T){
if(T==NULL) return;
inOrderTraverse(T->lchild);
cout<<T->data<<" ";
inOrderTraverse(T->rchild);
}
void postOrderTraverse(BiTree &T){
if(T==NULL) return;
postOrderTraverse(T->lchild);
postOrderTraverse(T->rchild);
cout<<T->data<<" ";
}
int main(){
BiTree myTree;
create(myTree);
//遍历
preOrderTraverse(myTree);
cout <<endl;
inOrderTraverse(myTree);
cout <<endl;
postOrderTraverse(myTree);
cout <<endl;
return 0;
}