二叉树的遍历有两种方式,一种是递归遍历,另一种是非递归遍历。
前一种方法从形式上很好理解,在这里不再过多的谈论,直接上代码。
二叉树的建立
//定义并通过层序生成一棵二叉树
typedef struct BiTree{
int value;
struct BiTree* left;
struct BiTree* right;
}BiTree;
BiTree* CreatBiTree(){
int arr[6]={
1,5,3,2,6,7};
BiTree** con[MAX]={};
int idxa=1;
int idxc1=0;
int idxc2=2;
for(int i=0;i<MAX;++i)con[i]=NULL;
BiTree *root=(BiTree*)malloc(sizeof(BiTree));
root->value=arr[0];
root->left=root->right=NULL;
con[0]=&(root->left);
con[1]=&(root->right);
while(idxa<6){
BiTree* q=(BiTree*)malloc(sizeof(BiTree));
q->value=arr[idxa++];
q->left=q->right=NULL;
*con[idxc1++]=q;
con[idxc2++]=&(q->left);