#include
#include
#include
struct tree//声明树的结构
{
struct tree *left,*right;
int data;
};
typedef struct tree treenode;//声明新类型树结构
typedef treenode *b_tree;//声明二叉树链表//插入二叉树节点
b_tree insert_node(b_tree root, int node)
{
b_tree newnode ;//声明树根指针
b_tree currentnode;//声明目前节点指针
b_tree parentnode;//声明父节点指针//申请新节点的内存空间
newnode=(b_tree)malloc(sizeof(treenode));
newnode->data=node;//存入节点内容
newnode->right=NULL;//初始化右指针
newnode->left=NULL;if(root==NULL)return newnode;
else
{
currentnode=root;//存储目前节点指针
while(currentnode!=NULL)
{
parentnode=currentnode;//存储父节点指针
if(currentnode->data>node)//比较节点的数值大小
currentnode=currentnode->left;//左子树
else currentnode=currentnode->right;//右子树
}
if(parentnode->data>node)//将父节点和子节点做链接
parentnode->left=newnode;//子节点为父节点的左子树
else parentnode->right=newnode;//子节点为父节点的右子树
}
return root;//返回根节点的指针
}//建立二叉树
b_tree create_btree(int *data,int len)
{
b_tree root=NULL;
for(int i=0;ileft);//遍历左子树
coutright);//遍历右子树
}
}//主程序
void main()
{
b_tree root=NULL;//树根指针
int value;//暂存读入将要遍历的数值
int nodelist[20];
int index=0;
printf("请输入将要参与遍历的数值:
");
//读数值到数组中,
//这是一种不知道数组元素到底有几个的情况下的输入方法
scanf("%d",&value);
while(value!=0)
{
nodelist[index]=value;
index ;
scanf("%d",&value);
}
//建立二叉树
root=create_btree(nodelist,index);
//中序遍历
printf("中序遍历二叉树结果如下
");
in_order(root);
printf("
");
}。
全部