用C++写一个树结构算法
时间: 2024-06-08 11:06:38 浏览: 19
当然可以!下面是一个使用C语言实现的简单树结构算法的示例:
```c
#include <stdio.h>
#include <stdlib.h>
// 树节点结构定义
typedef struct TreeNode {
int data;
struct TreeNode* left;
struct TreeNode* right;
} TreeNode;
// 创建新节点
TreeNode* createNode(int data) {
TreeNode* newNode = (TreeNode*)malloc(sizeof(TreeNode));
if (newNode == NULL) {
printf("内存分配失败!\n");
exit(1);
}
newNode->data = data;
newNode->left = NULL;
newNode->right = NULL;
return newNode;
}
// 插入节点
TreeNode* insert(TreeNode* root, int data) {
if (root == NULL) {
return createNode(data);
}
if (data < root->data) {
root->left = insert(root->left, data);
} else if (data > root->data) {
root->right = insert(root->right, data);
}
return root;
}
// 递归前序遍历
void preorderTraversal(TreeNode* root) {
if (root != NULL) {
printf("%d ", root->data);
preorderTraversal(root->left);
preorderTraversal(root->right);
}
}
int main() {
TreeNode* root = NULL; // 树根节点初始化为空
// 插入节点
root = insert(root, 8);
insert(root, 3);
insert(root, 10);
insert(root, 1);
insert(root, 6);
insert(root, 14);
insert(root, 4);
insert(root, 7);
insert(root, 13);
// 前序遍历输出
printf("前序遍历结果:");
preorderTraversal(root);
printf("\n");
return 0;
}
```
以上代码实现了一个简单的二叉搜索树,其中包括创建节点、插入节点以及前序遍历的功能。你可以根据自己的需求在此基础上进行扩展和修改。希望对你有所帮助!