力扣算法刷题Day16 | 二叉树:最大最小深度 完全二叉树节点个树

力扣题目:#104.二叉树的最大深度

刷题时长:5min

解题方法:递归法

复杂度分析

  • 时间:O(n),其中 n 为二叉树节点的个数。每个节点在递归中只被遍历一次。

  • 空间:O(H),其中 H 是树的高度。空间复杂度主要取决于递归时栈空间的开销,最坏情况下,树呈现链状,空间复杂度为 O(N)。平均情况下树的高度与节点数的对数正相关,空间复杂度为 O(log⁡N)。

问题总结

本题收获

  • 完成了相关题目:#559.n叉树的最大深度 (5min)

力扣题目:#111.二叉树的最小深度

刷题时长:20min

解题方法:递归法

复杂度分析

  • 时间:O(n),其中 n 为二叉树节点的个数。每个节点在递归中只被遍历一次。
  • 空间:O(H),其中 H 是树的高度。空间复杂度主要取决于递归时栈空间的开销,最坏情况下,树呈现链状,空间复杂度为 O(N)。平均情况下树的高度与节点数的对数正相关,空间复杂度为 O(log⁡N)。

问题总结

  • 踩坑,把没有没有左孩子的分支算为最短深度

本题收获

  • 考虑进一侧孩子为空的情况:右子树为空,左子树不为空,最小深度是 1 + 左子树的深度。 最后如果左右子树都不为空,返回左右子树深度最小值 + 1
  • 求二叉树的最小深度和求二叉树的最大深度的差别主要在于处理左右孩子不为空的逻辑

力扣题目:#222.完全二叉树的节点个数

刷题时长:20min

解题方法:递归法

复杂度分析

  • 时间:O(log n * log n) ,在求左右子树深度时,每次都是从根节点开始往下走,每个子树的深度都是 O(log(n)) 级别的,所以求深度的时间复杂度为 O(log(n))。然后每一层都要计算一次这个深度,层数也是log(n),那就是相乘的了
  • 空间:O(1)

问题总结

  • 只能想到普通二叉树的O(n)解法,没能想到满足完全二叉树性质的特殊技巧

本题收获

  • 判断满二叉树:左右深度一致
  • 若非满二叉树,递归其左子树和右子树,直到找到满二叉树(无左右孩子的叶节点也算是)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值