二叉搜索树的检查
三种方法:
- 递归DFS中序遍历进行
- 得到结果res,检查
res.sort()==res and len(set(res))==len(res)
- 保证中序结果是排好序的,并且没有重复值
- 得到结果res,检查
- 迭代中序DFS遍历进行,在迭代中检测
pre<current.val
- 递归中序DFS遍历进行,如下,每次都要带入
maxV,minV
两个参数往下走
1 | # Definition for a binary tree node. |
二叉搜索树的插入新节点
思路:
总有一个NULL节点放新的val节点
所以只要看val与root.val的大小关系,然后选左右子树递归插入就好了
1 | # Definition for a binary tree node. |
二叉搜索树的删除节点
主要是各种情况的判断:
- root为空,直接返回root
- root节点值小于key
- root节点值大于key
- root节点值等同key
- 右子树为空
- 左子树为空
- 左右子树都不为空
- 找到右子树的最小值\最左的节点,把左子树接到右子树上
- 都为空的情况没有考虑。。。。。。。。(但是测试例子没有这种例子)
1 | # Definition for a binary tree node. |
平衡二叉树
1 | # Definition for a binary tree node. |
二叉搜索树与双向循环链表
1 | """ |