二叉搜索树 c++怎么实现
时间: 2024-01-27 20:03:01 浏览: 69
二叉搜索树(Binary Search Tree,BST)可以通过链式存储结构实现。其节点结构体定义如下:
```
typedef struct TreeNode{
int data;
struct TreeNode *left;
struct TreeNode *right;
}TreeNode;
```
其中,`data`表示节点的数据,`left`和`right`分别指向左右子树。
BST的实现基于以下性质:
1. 左子树上所有节点的值均小于根节点的值;
2. 右子树上所有节点的值均大于根节点的值;
3. 左右子树也分别为二叉搜索树。
因此,BST的插入、删除、查找等操作都要满足以上性质。
下面给出BST的插入操作示例代码:
```
TreeNode* insert(TreeNode* root, int val){
if(root == NULL){ //如果根节点为空,则创建新节点
TreeNode* node = (TreeNode*)malloc(sizeof(TreeNode));
node->data = val;
node->left = NULL;
node->right = NULL;
return node;
}
if(val < root->data){ //如果插入的值小于根节点的值,则插入到左子树中
root->left = insert(root->left, val);
}
else if(val > root->data){ //如果插入的值大于根节点的值,则插入到右子树中
root->right = insert(root->right, val);
}
return root;
}
```
其中,如果根节点为空,则创建新节点并返回;否则,比较插入的值和根节点的值,将其插入到左右子树中。
BST的删除操作比较复杂,需要考虑多种情况。具体实现可以参考相关资料。
阅读全文