c语言完成,直接写代码不用解释:给定一组数:{38,18,29,18,23,10,65}问题三、设计和实现一个基于最简单的节点的二叉排序树,要求:包含一个初始化树结构的方法,然后输入第一个数,建立第一个节点;之后输入第二个数,建立第二个节点,依次进行下去,当输入最后一个数65的时候,建立完成这棵树。每个父亲节点的左孩子都是比父亲节点小的节点,每个父亲节点的右子树都是比父亲节点大的数。
时间: 2023-02-09 22:16:28 浏览: 97
这是一个二叉排序树的简单实现:
```
#include <stdio.h>
#include <stdlib.h>
typedef struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
} TreeNode;
TreeNode* createNode(int val) {
TreeNode* node = (TreeNode*)malloc(sizeof(TreeNode));
node->val = val;
node->left = NULL;
node->right = NULL;
return node;
}
void initTree(TreeNode** root) {
*root = NULL;
}
void insertNode(TreeNode** root, int val) {
if (*root == NULL) {
*root = createNode(val);
} else {
if (val < (*root)->val) {
insertNode(&(*root)->left, val);
} else {
insertNode(&(*root)->right, val);
}
}
}
int main() {
int data[] = {38, 18, 29, 18, 23, 10, 65};
int n = sizeof(data) / sizeof(int);
TreeNode* root;
initTree(&root);
for (int i = 0; i < n; i++) {
insertNode(&root, data[i]);
}
return 0;
}
```
这是一个简单的二叉排序树的实现。它定义了一个树节点的结构体,包含了一个整数值和两个指向左儿子和右儿子的指针。然后它定义了一个初始化树的函数,一个插入节点的函数,和一个创建节点的函数。在主函数中,它使用一个数组来初始化树,并且对于每个数字都调用插入节点的函数来建立树。
注意:这个代码没有解决重复元素的问题。如果要解决重复元素的问题,可以在插入节点的函数中增加判断,如果值已存在,则不插
阅读全文