自己的思路,这个要使用后序遍历,父节点从子节点收集消息,取子节点的最大深度,然后加1,得到父节点的最大深度
深度:叶子节点到根节点的距离,叶子节点的深度为1;
高度:根节点到叶子节点的距离,根节点的高度为1;
求深度一般用前序遍历,先便利根节点,再子节点,求高度用后续遍历,先遍历子节点,再回到父节点,为什么这道求深度的题用后续遍历的答案比较多,因为根节点的高度就是最大深度。
这道题掉进卡哥说的坑里了,原本以为把max改成min就可以,但是题目要求是“最小深度是从根节点到最近叶子节点的最短路径上的节点数量”,叶子节点就是左右子树都为空的节点,如果根节点的左子树为null,右子树不为null,此时按照上诉方法答案是1,这是错误的,因为跟题目要求不符,因此要多一步判断,如果出现这样的情况,取右子树最小深度加1。左子树不为null,右子树为null同理。
跟第一道一样的思路;
直接用后续遍历需要遍历所有的节点,可以利用完全二叉树的特性,如果一个节点的左边的深度等于右边的深度,说明这个节点是一颗满二叉树,直接返回2^(深度)-1即可,这样只遍历左右两边即可,不需要遍历所有节点