Day23

二叉树part07

LC530二叉搜索树的最小绝对差

  1. 思路:跟昨天的判断是否是搜索二叉树类型,采用中序遍历的方法,并保留一个pre用来记录前一个节点的值,一个result记录结果
    • 递归终止条件:当cur==null是空节点,终止递归
    • 更新结果:当pre!=-1时,更新结果
  2. 代码
    在这里插入图片描述

LC501二叉搜索树中的众数

  1. 暴力方法(超时7min),超时分析
    • HashMap的遍历方式掌握不是很熟悉
      • Collection<> list = map.values():获取map集合中的所有value
      • Set<> set = map.keySet():获取map集合中的所有key
    • list转换为数组不熟悉:T[] result = list.toArray(new T[0])
    • 数组转换为list:List list = Arrays.asList(T[])
  2. 代码:
    在这里插入图片描述
  3. 递归方法(未掌握
    • 因为是二叉搜索树,因此采用中序遍历的递归方式,只不过需要初始化的变量多了一些
      • 需要统计元素,因此需要初始化list
      • 需要记录前一个元素和目前元素的对比,因此需要初始化前一个元素的值
      • 需要记录当前频率count
      • 需要记录出现最多的频率maxCount
    • 递归中间的判定条件
      • 如果pre的值与cur的值相等:当前频率count++,不等,更新pre和count
      • 判断当前频率与最大频率,count>maxCount,之前记录的最大频率失效,需要更新list和maxCount,list.clear()。count==maxCount,list添加元素
  4. 代码
    在这里插入图片描述

LC236二叉树的最近公共祖先(未掌握

  1. 思路:首先想的是要是能自底向上查找就好了,这样就可以找到公共祖先了=》后序遍历(左右中)根据左右子树的返回值,来处理中节点的逻辑
    • 其实left和right表示的含义是:我所在是子树中是否存在p和q,如果左右子树都存在直接return root
    • 一个为空return不为空的那个
    • 都为空直接return null
  2. 递归终止条件:root==null的时候,需要注意的是当root==p || roo==q(这也是想岔的原因)
  3. 代码
    在这里插入图片描述
  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值