中序 + 后序构造二叉树
后序最后一个元素先确定根节点。
再去中序里找到这个根的位置。
根左边是左子树,根右边是右子树。
然后继续递归。
记一句:后序定根,中序切树。
最大二叉树
每次先找当前数组里的最大值作为根。
最大值左边部分建左子树。
最大值右边部分建右子树。
数组为空就返回 None。
今天这个题最容易错的是切片,右边一定是 nums[index+1:]。
合并二叉树
两个节点都存在,就把值加起来。
一个为空,就直接返回另一个。
然后继续合并左子树和右子树。
这题本质就是两棵树对应位置一起处理。
二叉搜索树中的搜索
目标值等于当前节点,直接返回。
目标值小于当前节点,去左边找。
目标值大于当前节点,去右边找。
二叉搜索树可以只走一条路,不用左右都搜。
验证二叉搜索树
不能只看左孩子小、右孩子大。
真正要满足的是左子树所有节点都小于根,右子树所有节点都大于根。
也就是说要看整棵子树,不是只看父子。
常用方法是中序遍历看是否严格递增,或者递归加上下界范围。