void BinarySearchTree_add(TreeNode *Tree,int data) { if(Tree->root==NULL) { BinarySearchTree *parent=crate_node(data); Tree->root=parent; Tree->size++; printf("1\n"); return ; }else { BinarySearchTree *parent=Tree->root; BinarySearchTree *node=Tree->root; int cmp=0; while(node!=NULL) { cmp=compare(data,node->data); printf("2----%d\n",node->data); if(cmp>0) { printf("right\n"); node=node->right; }else if(cmp<0) { printf("left\n"); node=node->left; }else { return ; } } BinarySearchTree *newnode=crate_node(data); printf("addnewnode----%d\n",data); if(cmp<0) { Tree->root->left=newnode; }else{ Tree->root->right=newnode; } Tree->size++; } }
时间: 2024-04-16 17:29:31 浏览: 20
这段代码看起来是向二叉搜索树中添加一个节点的函数 `BinarySearchTree_add`。但是在代码中存在一些问题:
1. `BinarySearchTree *parent=crate_node(data);` 应该是 `BinarySearchTree *parent=create_node(data);`,即创建一个新的二叉搜索树节点。
2. `BinarySearchTree *parent=Tree->root;` 这里将 `Tree->root` 赋值给了 `parent`,但实际上应该是将 `Tree->root` 的值赋给 `node`,即 `BinarySearchTree *node=Tree->root;`。
3. 在使用 `compare` 函数进行比较时,代码中没有给出该函数的实现。你需要自己实现比较函数来比较节点数据的大小。
4. 在添加新节点时,应该将新节点连接到父节点的左子节点或右子节点上,而不是直接连接到根节点上。应该修改为:
```c
if (cmp < 0)
{
parent->left = newnode;
}
else
{
parent->right = newnode;
}
```
综上所述,这是一个部分实现的二叉搜索树添加节点的函数,但还需要进行一些修改和完善才能正常运行。希望对你有所帮助!
相关问题
数据结构演示算法c语言实现
这里提供一个使用C语言实现二叉搜索树的代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义二叉树节点结构体
typedef struct TreeNode {
int data; // 节点的值
struct TreeNode *left; // 左子节点指针
struct TreeNode *right; // 右子节点指针
} TreeNode;
// 定义二叉搜索树结构体
typedef struct BinarySearchTree {
TreeNode *root; // 根节点指针
} BinarySearchTree;
// 初始化二叉搜索树
void init(BinarySearchTree *tree) {
tree->root = NULL;
}
// 创建新节点
TreeNode *createNode(int data) {
TreeNode *newNode = (TreeNode *) malloc(sizeof(TreeNode));
newNode->data = data;
newNode->left = NULL;
newNode->right = NULL;
return newNode;
}
// 插入节点
void insert(BinarySearchTree *tree, int data) {
TreeNode *newNode = createNode(data);
if (tree->root == NULL) {
tree->root = newNode;
return;
}
TreeNode *currNode = tree->root;
TreeNode *parentNode;
while (currNode != NULL) {
parentNode = currNode;
if (data < currNode->data) {
currNode = currNode->left;
} else {
currNode = currNode->right;
}
}
if (data < parentNode->data) {
parentNode->left = newNode;
} else {
parentNode->right = newNode;
}
}
// 中序遍历
void inorderTraversal(TreeNode *node) {
if (node != NULL) {
inorderTraversal(node->left);
printf("%d ", node->data);
inorderTraversal(node->right);
}
}
// 遍历二叉搜索树
void traverse(BinarySearchTree *tree) {
inorderTraversal(tree->root);
}
int main() {
BinarySearchTree tree;
init(&tree);
insert(&tree, 5);
insert(&tree, 3);
insert(&tree, 7);
insert(&tree, 1);
insert(&tree, 9);
traverse(&tree);
return 0;
}
```
这个代码中,首先定义了一个二叉树节点结构体和一个二叉搜索树结构体。然后定义了初始化函数init、创建新节点函数createNode、插入节点函数insert、中序遍历函数inorderTraversal和遍历二叉搜索树函数traverse。最后在main函数中创建二叉搜索树,插入节点,遍历二叉搜索树并输出结果。
如果想实现其他数据结构和算法,只需要按照相应的逻辑进行编写即可。
python数据结构二叉搜索树的代码if __name__=='__main__':后边怎么写
可以按照以下步骤编写代码:
1. 定义一个二叉搜索树类,包括节点类和树类。
2. 实例化一个二叉搜索树对象,并插入一些节点,比如:
tree = BinarySearchTree()
tree.insert(5)
tree.insert(3)
tree.insert(7)
tree.insert(1)
tree.insert(4)
tree.insert(6)
tree.insert(8)
3. 调用二叉搜索树的一些方法,比如查找节点、删除节点、遍历节点等,来验证二叉搜索树的正确性。
4. 最后,在if __name__=='__main__':中打印二叉搜索树的结构,以便查看结果。
if __name__ == '__main__':
tree = BinarySearchTree()
tree.insert(5)
tree.insert(3)
tree.insert(7)
tree.insert(1)
tree.insert(4)
tree.insert(6)
tree.insert(8)
print('In-order traversal:')
tree.in_order()
print('Pre-order traversal:')
tree.pre_order()
print('Post-order traversal:')
tree.post_order()
print('Minimum value:', tree.minimum())
print('Maximum value:', tree.maximum())
print('Search for value 3:', tree.search(3))
print('Search for value 9:', tree.search(9))
tree.delete(5)
print('In-order traversal after deleting 5:')
tree.in_order()
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)