//二叉树生成与中序遍历的C实现
#include <stdio.h>
struct Tree{
Tree * father; //指向该节点的父节点
int value; //节点的值
Tree * left,* right; //分别指向该节点的左子树和右子树
};
//构造二叉树,在二叉树中插入节点
void tree_insert_node(Tree*& t, int value)
{
Tree * y = NULL;
Tree * x = t;
while(x!=NULL){
y = x;
if(value <= x->value){
x = x->left;
}else{
x = x->right;
}
}
if(y == NULL){//the tree is empty
t = new Tree;
t->value = value;
t->left = t->right = t->father = NULL;
}else{
Tree * node = new Tree;
node->value = value;
node->left = node->right = NULL;
node->father = y;
if(value <= y->value){
y->left = node;
}else{
y->right = node;
}
}
}
//中序遍历,显示二叉树
void display_tree(Tree *t){
if(t!=NULL){
display_tree(t->left);
printf("%d ",t->value);
display_tree(t->right);
}
}
int main()
{
Tree * t = NULL;
int a[] = {23,43,56,6,-34,-65,34,6,3,4,234};
for(int i = 0 ;i < 11; i++){
tree_insert_node(t,a[i]);
}
display_tree(t);
return 0;
}
二叉树
最新推荐文章于 2020-10-29 22:13:14 发布