最大二叉树
题解:
此题目和通过前序和后序遍历来构造二叉树是一样的,1.首先我们判空数组,也是作为递归终止的条件。2找到数组中的最大值,以及其所在的下标位置,3.创建根节点,切割出来左右数组,4.递归。5返回root根节点
代码:
合并二叉树
题解:
1.确定递归函数的参数和返回值
要合并的是两个二叉树,那么参数至少是两个二叉树的根节点,返回值就是合并后的二叉树的根节点
2.确定终止条件
传入了两个树,那么两个树都会被遍历,如果root1 == None,两个树合并就是root2,反之
3,确定单层递归的逻辑
采用前序遍历的方法,我们重复利用root1这个树(root2也行),先将两个树的元素加起来
root1的左子树,合并root1的左子树 root2左子树之后的左子树
root1的右子树,合并root1的右子树 root2右子树之后的右子树
最终root1就是合并之后的根节点
二叉搜索树中的搜索
题解:
1.确定递归方法的参数和返回值
传入的是根节点和要搜索的值,返回的是以这个搜索树所在的节点
2.确定终止条件
若root为空,或者找到了这个值的节点,返回root节点
3.确定单层递归逻辑
搜索二叉树的特性:
若它的左子树不空,则左子树上所有节点的值均小于它的根节点的值
若它的右子树不空,则右子树上所有节点的值均大于它的根节点的值
他的左右子树也分别为二叉搜索树
那么此处的逻辑是:跟节点的值和搜索值做对比,若root.val > val,则搜索左子树,反之搜索右子树
代码: