力扣刷题记录-4

No.226

在这里插入图片描述

复盘:
1、这道题的核心思路是递归
2、首先将叶子节点进行翻转,然后回到它的父节点,如果其左右结点都已翻转,则直接交换两个子树
这样一直递归至根节点,则算法完成,二叉树也完成了翻转

No.112

在这里插入图片描述

复盘:
1、核心思路是遍历树,计算根节点到叶子节点的值,如果有和输入对应的值则返回true
2、我的解法是递归,因为每一个结点到叶子节点的值的和等于它本身的值加上它子节点到叶子节点的值的和,所以使用递归可以很方便的计算出值的和
3、题解还有一种解法是BFS,核心思路是使用两个队列,分别存储将要遍历的节点,以及根节点到这些节点的路径和即可。

No.700

在这里插入图片描述

复盘:
1、首先这道题复习了一下二叉搜索树的知识:
二叉搜索树是一棵二叉树,每个节点都有以下特性:
(1)大于左子树上任意一个节点的值,
(2)小于右子树上任意一个节点的值。
2、知道了二叉搜索树的性质之后就很简单了,可以用递归或者迭代的思路来找到对应的结点
3、递归的话,对于每个结点,先判断它的子节点的值是否为所要的值,一直找到叶子节点为止,然后开始递归
4、迭代的话,就从根节点开始判断大小,如果小于当前节点的值则迭代至左子结点,大于则迭代值右子节点,一直迭代到找到对应的结点或者空节点为止。

No.701

在这里插入图片描述

复盘:
1、这道题也是二叉搜索树,所以实际上也不是很难,根据值的大小决定迭代至左或右即可
2、核心思路跟No.700类似,遍历至val值对应的位置然后创建并插入新结点

No.98

在这里插入图片描述

复盘:
1、这一题还是二叉搜索树,核心思路就是通过遍历检测BST是否生成正确
2、二叉搜索树的生成顺序是中序遍历,因此我们只需要用中序遍历的顺序进行检测就OK了
3、当然还有一种思路就是递归,如果该二叉树的左子树不为空,则左子树上所有节点的值均小于它的根节点的值
如果它的右子树不空,则右子树上所有节点的值均大于它的根节点的值;它的左右子树也为二叉搜索树。

No.653

在这里插入图片描述

复盘:
1、这道题跟之前做的一道两数之和很类似,用hash_set来存储和对应的键即可
2、比如说两数之和为5,如果结点的值则存储键值: 5 - 1 = 4
后续如果读到结点的值为4的话,则返回true
3、解题方法的不同在于遍历BST的方法,用迭代/BFS/中序遍历都行。

No.235

在这里插入图片描述

复盘:
1、这道题的核心思路是遍历BST至p、q两个结点,然后找到最近的公共祖先
2、我是用了两次遍历。。将遍历过的结点存到数组里,最后返回数组下标最大的结点,即最近的公共祖先
3、实际上一次遍历就够了,因为BST的性质,所以我们在遍历的同时判断p、q的值应该是属于左子树还是右子树
如果两者遍历的顺序不同,则当前结点即为最近的公共祖先,还省去了数组的空间。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值