Catalogue
介绍
二叉树搜索树(BST)是二叉树的一种特殊表示形式,主要有以下特性:
- 每个节点的值必须大于存储在左侧子树的任何值
- 每个节点的值必须小于存储在右侧子树的任何值
- 任意节点的左右子树也分别为二叉查找树
例子:
下面就介绍关于二叉搜索树的「增删查」
二叉树的插入
节点类1
2
3
4
5
6
7
8public class TreeNode {
int val;
TreeNode left;
TreeNode right;
public TreeNode(int val) {
this.val = val;
}
}
插入1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18/**
* 插入操作
*
* @param root
* @param val
* @return
*/
public TreeNode insert(TreeNode root, int val) {
if (root == null) {
return new TreeNode(val);
}
if (root.val > val) {
root.left = insert(root.left, val);
} else if (root.val < val) {
root.right = insert(root.right, val);
}
return root;
}
二叉树的查询
1 |
|
二叉树的删除
二叉树的删除比查询,插入麻烦一点,需要考虑几种情况。
1.要删除的节点是一片树叶
这种情况就可以直接删除
2.要删除的节点有一个儿子
可以将儿子的值调整到父节点
3. 要删除的节点有两个儿子
这种情况就比较复杂,一般的删除策略是用其右子树的最小数据去代替该节点的数据,然后再将最小数据所在的节点删除掉
删除代码
1 | /** |