leetcode-day17-二叉树

最大二叉树


题解:

此题目和通过前序和后序遍历来构造二叉树是一样的,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,则搜索左子树,反之搜索右子树

代码:


验证二叉搜索树



©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容