请写一个C语言二叉树算法
时间: 2023-06-05 18:05:41 浏览: 66
以下是一个简单的C语言二叉树搜索的算法:
typedef struct node {
int value;
struct node *left;
struct node *right;
} Node;
void insert(Node **root, int value) {
if (*root == NULL) {
*root = (Node*)malloc(sizeof(Node));
(*root)->value = value;
(*root)->left = NULL;
(*root)->right = NULL;
} else if (value < (*root)->value) {
insert(&(*root)->left, value);
} else if (value > (*root)->value) {
insert(&(*root)->right, value);
}
}
void traverse(Node *root) {
if (root != NULL) {
traverse(root->left);
printf("%d ", root->value);
traverse(root->right);
}
}
int main() {
Node *root = NULL;
insert(&root, 5);
insert(&root, 3);
insert(&root, 7);
insert(&root, 1);
insert(&root, 9);
traverse(root);
return 0;
}
这段代码定义了一个结构体“Node”,包含一个整型变量“value”和两个指向“Node”类型的结构体的指针“left”和“right”。然后定义了一个插入函数“insert”用来插入一个新的节点,该函数使用了递归实现。最后定义了一个遍历函数“traverse”来遍历整个二叉树,并将节点的整型值打印到控制台。在主函数中创建一个空的根节点,然后插入一些节点,最后调用遍历函数输出结果。