104.二叉树的最大深度
- 昨天用层序遍历写过(迭代法)
- 看Carl视频收获:
- 深度:任意节点到根节点的距离,用前序遍历,从上往下计数;
- 高度:任意节点到叶子节点的距离,用后序遍历,从下往上计数;
- 因此最大深度 = 根节点的高度
- 用递归法解决,用后序遍历更简单(前序遍历涉及回溯,还没看)
- 559.n叉树的最大深度:相似解法
111.二叉树的最小深度
- 昨天用层序遍历写过(迭代法)
- 看Carl视频收获:
- 最小深度:根节点到最近的叶子节点的距离;
- 也是用后序遍历,求最小高度
- 要注意的是,当根节点的左右节点某一个为
nullptr
时,会返回1,但是实际上这是根节点到根节点的高度,不是叶子节点到根节点的高度,因此不能直接将max() + 1
变为min() + 1
222.完全二叉树的节点个数
- 若当做普通的二叉树,递归法、迭代法,普通的遍历方法都可以做
- 根据完全二叉树特性,判断子树是否为满二叉树,若是,则用公式计算相加;若不是,则继续递归,判断子树是否为满二叉树
- 如何判断是否为满二叉树:左侧深度==右侧深度
- c++中,
x^n
不是次方,pow(x, n)
才是次方