**二叉树排序树 BST:**要么是空树,要么具有下列性质
- 如果左子树不空,则左子树的结点值小于根结点
- 如果右子树不空,则右子树的值大于根节点
- 中序遍历,从小到大排序好
- 最左边孩子,一定是最小的
- 最右边孩子,一定是最大的
- 左右子树也是BST
- 插入,删除比较方便
实现代码:
class Node
{
public:
Node(int v) :m_value(v), m_left(NULL), m_right(NULL) {
}
int m_value;
Node* m_left;
Node* m_right;
};
class BSTree
{
public:
BSTree() :m_root(NULL) {
}
void InsertBSTValue(Node*& root, int v);
Node* Search(Node* root, int k);
void Del(Node*& root, int k); // 删除值为k的结点
int GetMax()const;
int GetMin()const;
void Sort(Node* root);
Node* m_root;
};
/*
创建二叉树排序树--递归
1.先创建根
2.用v和根比较,v<root,则创建左子树
3.v>root,则创建右子树
*/
void BSTree::InsertBSTValue(Node*& root, int v)
{
if (root

本文介绍了二叉排序树(BST)的基本概念,包括其特性:左子节点值小于根节点,右子节点值大于根节点,中序遍历结果有序。在BST中,最左边的节点为最小值,最右边的节点为最大值。由于这些特性,BST在插入和删除操作上具有优势。文章还提到了相关的实现代码。
最低0.47元/天 解锁文章
1289

被折叠的 条评论
为什么被折叠?



