写一个c++ 二叉树排序算法
时间: 2023-11-21 18:05:16 浏览: 95
好的,以下是一个基于C语言的二叉树排序算法的代码示例:
```
#include <stdio.h>
#include <stdlib.h>
// 定义二叉树结构体
typedef struct TreeNode {
int value;
struct TreeNode *left;
struct TreeNode *right;
} TreeNode;
// 定义二叉树节点的创建函数
TreeNode* create_node(int value) {
TreeNode* node = (TreeNode*) malloc(sizeof(TreeNode));
node->value = value;
node->left = NULL;
node->right = NULL;
return node;
}
// 定义二叉树节点的插入函数
void insert_node(TreeNode **root, int value) {
if (*root == NULL) {
*root = create_node(value);
} else if (value < (*root)->value) {
insert_node(&((*root)->left), value);
} else {
insert_node(&((*root)->right), value);
}
}
// 定义二叉树的前序遍历函数
void preorder_traversal(TreeNode *root) {
if (root != NULL) {
printf("%d ", root->value);
preorder_traversal(root->left);
preorder_traversal(root->right);
}
}
int main() {
// 创建一个空的二叉树
TreeNode *root = NULL;
// 向二叉树中插入一些节点
insert_node(&root, 5);
insert_node(&root, 3);
insert_node(&root, 7);
insert_node(&root, 1);
insert_node(&root, 9);
insert_node(&root, 4);
// 输出排序后的结果
printf("排序结果:");
preorder_traversal(root);
return 0;
}
```
以上代码中,我们定义了一个二叉树结构体 `TreeNode`,包含了一个 `value` 属性和左右子节点的指针。我们还定义了创建节点函数 `create_node` 和插入节点函数 `insert_node`,以及二叉树的前序遍历函数 `preorder_traversal`。在 `main` 函数中,我们创建一个空的二叉树,并向其中插入一些节点,最后调用前序遍历函数输出排序后的结果。
希望这个代码示例能够对你有所帮助。如果有任何问题或疑惑,欢迎再次向我提问。
阅读全文