代码随想录算法训练营第二十天|654.最大二叉树、617.合并二叉树、700.二叉搜索树中的搜索、98.验证二叉搜索树

654.最大二叉树 

思路:

使用前序遍历,先构造中间节点

递归三部曲:

1.确定递归函数的参数和返回值

参数传入的是存放元素的数组,返回该数组构造的二叉树的头结点

2.确定终止条件

当递归遍历的时候,如果传入的数组大小为1,说明遍历到了叶子节点

3.确定单层递归的逻辑

找到数组中最大的值和对应的下标, 最大的值构造根节点,下标用来下一步分割数组

最大值所在的下标左区间 构造左子树

最大值所在的下标右区间 构造右子树


617.合并二叉树 

思路:同级操作,前中后都可以

递归三部曲:

1.确定递归函数的参数和返回值

要合入两个二叉树,那么参数至少是要传入两个二叉树的根节点,返回值就是合并之后二叉树的根节点

2.确定终止条件

如果t1 == NULL 了,两个树合并就应该是 t2

如果t2 == NULL,那么两个数合并就是t1

3.确定单层递归的逻辑

把两棵树的元素加到一起

t1->val+=t2->val;// 中

t1->left=mergeTrees(t1->left,t2->left);// 左

t1->right=mergeTrees(t1->right,t2->right);// 右

700.二叉搜索树中的搜索 

递归三部曲:

1.确定递归函数的参数和返回值

参数传入的就是根节点和要搜索的数值,返回的就是以这个搜索数值所在的节点

2.确定终止条件

if(root==NULL||root->val==val) returnroot;

3.确定单层递归的逻辑

二叉搜索树的节点是有序的,可以有方向的去搜索


98.验证二叉搜索树

递归中序遍历将二叉搜索树转变成一个数组,只要比较一下,这个数组是否是有序的,注意二叉搜索树中不能有重复元素

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

推荐阅读更多精彩内容