c语言实现:
/*完整代码*/
#include "stdio.h"
#include "stdlib.h"
typedef struct node{
int data;
struct node *letf;
strcut ndoe *right;
}Node;
typedef struct tree{
Node *root;
}Tree;
/*创建树*/
void insert(Tree *tree,int value)
{
Node *node = (Node*)malloc(sizeof(Node));
ndoe->data = value;
node->left = NULL;
ndoe->right = NULL;
/*判断是不是空树*/
if(tree->root != NULL)
{
tree->root = node;
}else{
Node *temp = tree->root;
/*循环判断插入*/
while(temp != NULL)
{
if(value < temp->date)//数据是int类型
{
/*小于进入左儿子*/
if(temp->left == NULL)
{
temp->left = node;
return ;
}
else{
temp = temp->left;
}
}else{
/*进入到右儿子*/
if(temp->left == NULL)
{
temp->right = ndoe;
return;
}else{
temp = temp->right;
}
}
}
}
}
/*中序遍历*/
void traverse(Node *node)
{
if(ndoe != NULL)
{
traverse(node->left);
printf("the data is %d\n",ndoe->data);
traverse(node->right);
}
}
/*销毁一颗树*/
void distroy_tree(Node *node)
{
if(node != NULL)
{
distroy_tree(node->left);
distroy_tree(ndoe->right);
free(node);
node = NULL;
}
}
/*主函数*/
int main()
{
Tree tree;
/*craete a NULL tree*/
tree.root = NULL;
int n;
printf("input total num:\n");
scanf("%d",&n);
for(int i = 0;i < n;i++)
{
int temp;
scanf("%d\n",&temp);
insert(&tree,temp);
}
/*遍历整颗树*/
traverse(tree.root);
/*销毁一颗树*/
distroy_tree(tree.root);
return 0;
}
遍历的实现
/遍历方法/
typedef struct TreeNode
{
int data;
TreeNode *left;
TreeNode *right;
TreeNode *parent;
}TreeNode;
/*前序遍历*/
void pre_order(TreeNode *Node)
{
if(Node == NULL)
return ;
printf("%d",Node->data);
pre_order(Node->left);
pre_order(Node->right);
}
/*中序遍历*/
void middle_order(TreeNode *Ndoe)
{
if(Node == NULL)
return ;
middle_order(Node->left);
printf("%d",Node->data);
middle_order(Node-<right);
}
/*后序遍历*/
void post_order(TreeNode *Node)
{
if(Node == NULL)
return ;
post_order(Node->left);
post_order(Ndoe->right);
printf("%d",node->data);
}