本文是树专题的第三篇文章
一、 二叉查找树(BST)
二叉查找树(BST)的主要性质:
- 根节点大于等于左子树所有节点,小于等于右子树所有节点。
- 二叉查找树中序遍历有序。因此常常可以先暴力中序遍历实现排序,再进行操作。
常见题目
- 查找元素等,可以使用递归思路解决。判断上和
root.val
比较。 - 构造bst类型,一般就二分思想结合递归。
- 在二叉树中查找两个元素。一般只能采用遍历的方法的得到有序数组。因为无法确定两个节点的位置。
例题1
无法采用递归的方式,因为不确定具体是否两个子树一边一个数字。采用遍历,然后采用字典或者双指针的方法。
class Solution:
def findTarget(self, root: TreeNode, k: int) -> bool:
queue = []
cur = root
ans = set()
while cur or queue:
while cur:
queue.append(cur)
cur = cur.left
cur = queue.pop()
# !!!只要采用字典方法,一定要先查询后存储
if k-cur