二叉树创建遍历规则:
1.先序:根-左-右
2.中序:左-根-右
3.后序:左-右-根
二叉树定义和辅助函数例如以下:
struct node {
int data;
struct node* left;
struct node* right;
};
void visit(int data)
{
printf("%d ", data);
}
int indata()
{
int data;
scanf("%d",&data);
return data;
}
先序创建二叉树:
struct node* CreateBiTree()//先序建立一个二叉树
{
char x; //x为根节点
struct node* t;
x=indata();
if (x==' ') /* 推断当前子树是否创建完毕*/
return NULL;
else
{
t=(struct node*)malloc(sizeof(struct node));
t->data=x;
t->left=CreateBiTree();
t->right=CreateBiTree();
}
return t;
}
先序遍历二叉树:
void preOrder(struct node* root)
{
if (root == NULL)
return;
visit(root->data);
preOrder(root->left);
preOrder(root->right);
}
中序创建二叉树:
struct node* CreateBiTree()//先序建立一个二叉树
{
char x; //x为根节点
struct node* t;
x=indata();
if (x==' ') /* 推断当前子树是否创建完毕*/
return NULL;
else
{
t=(struct node*)malloc(sizeof(struct node));
t->left=CreateBiTree();
t->data=x;
t->right=CreateBiTree();
}
return t;
}
中序遍历二叉树:
void inOrder(struct node* root)
{
if (root == NULL)
return;
inOrder(root->left);
visit(root->data);
inOrder(root->right);
}
后序创建二叉树
struct node* CreateBiTree()//先序建立一个二叉树
{
char x; //x为根节点
struct node* t;
x=indata();
if (x==' ') /* 推断当前子树是否创建完毕*/
return NULL;
else
{
t=(struct node*)malloc(sizeof(struct node));
t->left=CreateBiTree();
t->right=CreateBiTree();
t->data=x;
}
return t;
}
后序遍历二叉树
void inOrder(struct node* root)
{
if (root == NULL)
return;
inOrder(root->left);
inOrder(root->right);
visit(root->data);
}
转载请注明作者:小刘