源文件:
#include <stdio.h>
#include <stdlib.h>
struct BsTreeNode
{
int data;
struct BsTreeNode *left;
struct BsTreeNode *right;
};
struct BsTree
{
struct BsTreeNode *root;
};
// create
struct BsTreeNode *bsTreeCreatNode(int data)
{
struct BsTreeNode *node = (struct BsTreeNode *)malloc(sizeof(struct BsTreeNode));
node->data = data;
node->left = NULL;
node->right = NULL;
return node;
}
// insert
void bsTreeInsert(struct BsTree *tree, int data)
{
if (tree == NULL)
{
return;
}
if (!tree->root)
{
tree->root = bsTreeCreatNode(data);
return;
}
struct BsTreeNode *node = tree->root;
struct BsTreeNode *tmp = tree->root; //
while (node)
{
tmp = node;
if (data < node->data)
{
node = node->left;
}
else if (data > node->data)
{
node = node->right;
}
else
{
return;
}
}
if (data < tmp->data)
{
tmp->left = bsTreeCreatNode(data);
}
else
{
tmp->right = bsTreeCreatNode(data);
}
}
// search
// traversal
void bsTreeTraversal(struct BsTreeNode *node)
{
if (!node)
{
return;
}
// printf("%4d", node->data);
bsTreeTraversal(node->left);
// 中序遍历,打印输出是有序的。
printf("%4d", node->data);
bsTreeTraversal(node->right);
}
// delete
// update
int main(int argc, char **argv)
{
struct BsTree *tree = (struct BsTree *)malloc(sizeof(struct BsTree));
bsTreeInsert(tree, 3);
bsTreeInsert(tree, 1);
bsTreeInsert(tree, 7);
bsTreeInsert(tree, 2);
bsTreeInsert(tree, 4);
bsTreeInsert(tree, 6);
bsTreeInsert(tree, 5);
bsTreeTraversal(tree->root);
printf("\n");
return 0;
}
运行输出:
1 2 3 4 5 6 7