二叉搜索树
来源:互联网 发布:php打印直角三角形 编辑:程序博客网 时间:2024/06/05 20:28
一、二叉搜索树的性质:
1、每个结点都有一个作为搜索依据的关键码,并且这个关键码是互不相同的
2、左子树上的所有结点的关键码都小于根节点的关键码
3、右子树上的所有结点的关键码都大于根节点的关键码
4、左右子树也是二叉搜索树
例:
二、二叉树搜索树所支持的操作
1、查找
在二叉搜索树上进行查找,是从根节点出根据关键码的大小选择一条分支向下进行查找。一般情况下最多查找树的高度次就能得出结果,所以大多数情况下二叉搜索树的平均查找时间是O(logN)。但是如果删除多的话,二叉搜索树会逐渐向左倾斜,退化成链表,时间复杂度就是O(N).
例:
(1)、查找3
(2)、查找8
(3)、查找最小值
在这棵树不为空的情况下,判断根节点有没有左子树。如果根节点没有左子树的话,则直接返回根节点。如果有左子树的话,则沿左分支查找最后一个数。
(4)、查找最大值
在这棵树不为空的情况下,判断根节点有没有右子树。如果根节点没有右子树的话,则直接返回根节点。如果有右子树的话,则沿右分支查找最后一个数。
(5)、查找第k个数
2、插入
插入一个数使得二叉树仍然是一颗二叉搜索树。从根节点出发搜索插入位置,然后把新节点作为叶子结点插入。这样的话不需要移动结点,只需要修改一个叶子结点的空指针就行。
例:
3、删除
删除比较复杂一点,但是可以分为两种情况。
(1、假如要删除的结点有两个孩子,则应该将右子树上关键码最小的结点与要删除的结点交换,再删除右子树上关键码最小的那个结点。
例:
(2、假如要删除的结点只有一个孩子
例:
假如只有右孩子或者没有孩子与只有左孩子是相同的道理。
阅读全文
0 0
- 【二叉搜索数】HDU3791二叉搜索树
- 二叉树--二叉搜索树
- 【二叉树】二叉搜索树
- 二叉树- 二叉搜索树
- 【搜索树】二叉搜索树
- 二叉搜索树BSTree
- 二叉搜索树
- 二叉搜索树
- 二叉搜索树
- 最优二叉搜索树
- 二叉搜索树
- 二叉搜索树
- HDOJ3791 二叉搜索树
- 二叉查找树搜索
- 二叉搜索树
- 二叉搜索树
- BST 二叉搜索树
- 二叉搜索树
- 值类型与引用类型的区别
- Android开发中的权限设置
- android webview cookie (遇到的坑,终极方案,解决你的疑惑)
- ZooKeeper启动报错 JAVA_HOME is incorrectly set
- Vue数据发送
- 二叉搜索树
- Flex中嵌入HTML页面
- couldn't find "libgnustl_shared.so"
- 浅述多态
- HDU 2147 kiki's game
- 64. Minimum Path Sum
- JS四舍五入问题处理
- C++中const迭代器 和 const_iterator的区别
- [leetcode]175 Second Highest Salary