二叉树的创建方式
1. 自底向上
![在这里插入图片描述](https://img-blog.csdnimg.cn/98564fe9d4fd4235a6bce02e1c811544.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA56iL5bqP54y_5bCP5byg55qE5pel5bi456yU6K6w,size_16,color_FFFFFF,t_70,g_se,x_16#pic_center)
#include<limits.h>
#include<stdio.h>
#include<stdlib.h>
typedef struct BiTNode{
int data;
struct BiTNode *lchild,*rchild;
}BiTNode, *BiTree;
void merge(BiTree root, BiTree child1, BiTree child2)
{
root->lchild = child1;
root->rchild = child2;
}
void display(BiTree root)
{
printf("root = %d\n", root->data);
if (root->lchild)
printf("left=%d\n", root->lchild->data);
else
printf("left=NULL\n");
if (root->rchild)
printf("right=%d\n", root->rchild->data);
else
printf("right=NULL\n");
}
int main()
{
int value[7] = {20,14,30,8,18,25,45}, i;
BiTree TreeArray[7], pTree;
for(i=0;i<7;i++){
pTree = (BiTree) malloc(sizeof(BiTNode));
pTree->data = value[i];
pTree->lchild = NULL;
pTree->rchild = NULL;
TreeArray[i] = pTree;
}
merge(TreeArray[0], TreeArray[1], TreeArray[2]);
merge(TreeArray[1], TreeArray[3], TreeArray[4]);
merge(TreeArray[2], TreeArray[5], TreeArray[6]);
for(i=0; i<7; i++)
display(TreeArray[i]);
}
![在这里插入图片描述](https://img-blog.csdnimg.cn/d1b2dd1f12af48aea3c8e6a5350d3801.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA56iL5bqP54y_5bCP5byg55qE5pel5bi456yU6K6w,size_16,color_FFFFFF,t_70,g_se,x_16#pic_center)
#include<limits.h>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct BiTNode
{
char data;
struct BiTNode *lchild,*rchild;
}BiTNode, *BiTree;
void merge(BiTree root, BiTree child1, BiTree child2)
{
root->lchild = child1;
root->rchild = child2;
}
void display(BiTree root)
{
printf("root = %c\n", root->data);
if (root->lchild)
printf("left=%c\n", root->lchild->data);
else
printf("left=NULL\n");
if (root->rchild)
printf("right=%c\n", root->rchild->data);
else
printf("right=NULL\n");
}
int main()
{
char value[11] = {'-','+','/','a','*','e','f','b','-','c','d'}, i;
BiTree TreeArray[11], pTree;
for(i=0;i<11;i++)
{
pTree = (BiTree) malloc(sizeof(BiTNode));
pTree->data = value[i];
pTree->lchild = NULL;
pTree->rchild = NULL;
TreeArray[i] = pTree;
}
merge(TreeArray[0], TreeArray[1], TreeArray[2]);
merge(TreeArray[1], TreeArray[3], TreeArray[4]);
merge(TreeArray[2], TreeArray[5], TreeArray[6]);
merge(TreeArray[4], TreeArray[7], TreeArray[8]);
merge(TreeArray[8], TreeArray[9], TreeArray[10]);
for (i=0; i<11; i++)
display(TreeArray[i]);
}
2. 自顶向下(二叉排序树)
![在这里插入图片描述](https://img-blog.csdnimg.cn/50f16a3a821a49788f76c4b32a62a440.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA56iL5bqP54y_5bCP5byg55qE5pel5bi456yU6K6w,size_16,color_FFFFFF,t_70,g_se,x_16#pic_center)
#include<limits.h>
#include<stdio.h>
#include<stdlib.h>
typedef struct BiTNode{
int data;
struct BiTNode *lchild,*rchild;
}BiTNode, *BiTree;
void insertNode(BiTree root, BiTree child1,BiTree child2)
{
root->lchild = child1;
root->rchild= child2;
}
void insertNode(BiTree root, BiTree nNode) {
while(root != NULL)
{
if (root->data > nNode->data)
{
if (root->lchild == NULL)
{
root->lchild = nNode;
return ;
}
root = root->lchild;
}
else if (root->data < nNode->data)
{
if (root->rchild == NULL)
{
root->rchild = nNode;
return ;
}
root = root->rchild;
}
}
}
void display(BiTree root){
printf("root = %d\n", root->data);
if (root->lchild)
printf("left=%d\n", root->lchild->data);
else
printf("left=NULL\n");
if (root->rchild)
printf("right=%d\n", root->rchild->data);
else printf("right=NULL\n");
}
int main()
{
int value[7] = {20,14,30,8,18,25,45}, i ;
BiTree TreeArray[7], pTree;
TreeArray[0] = (BiTree) malloc(sizeof(BiTNode));
TreeArray[0]->data = value[0];
TreeArray[0]->lchild = NULL;
TreeArray[0]->rchild = NULL;
for(i=1;i<7;i++)
{
pTree = (BiTree) malloc(sizeof(BiTNode));
pTree->data = value[i];
pTree->lchild = NULL;
pTree->rchild = NULL;
TreeArray[i] = pTree;
insertNode(TreeArray[0], pTree);
}
for(i=0; i<7; i++)
display(TreeArray[i]);
}
![在这里插入图片描述](https://img-blog.csdnimg.cn/2f3c1fe2da104706bdaf8b73ba903965.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA56iL5bqP54y_5bCP5byg55qE5pel5bi456yU6K6w,size_6,color_FFFFFF,t_70,g_se,x_16#pic_center)