剑指offer面试题 求二叉数的深度

题目一:输入一棵二叉树的根结点,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成一条

路径,求最长路径的长度为二叉树的深度。

二叉树的结点定义如下:

struct BinaryTreeNode

{

    int                                  m_nValue;

    BinaryTreeNode*       m_pLeft;

    BinaryTreeNode*       m_pRight;

};

剑指offer面试题 求二叉数的深度_第1张图片

剑指offer面试题 求二叉数的深度_第2张图片

剑指offer面试题 求二叉数的深度_第3张图片


题目二:输入一棵二叉树的根结点,判断该树是不是平衡二叉树。如果某二叉树中任意结点的左右子树的深度

相差不超过1,那么它就是一棵平衡二叉树。例如,上一题中的二叉树就是一棵平衡二叉树。

解法一:重复遍历结点多次的解法,简单但是效率低


解法二:每个结点只遍历一次的解法

我们用后续遍历的方式遍历整棵二叉树,在遍历一个结点之前我们就已经遍历了他的左右子树。在遍历某结点的左右子树结点之后,我们可以根据它的左右子树的

深度判断它是不是平衡的,并得到当前结点的深度。当最后遍历到树的根结点的时候,也就判断了整颗二叉树

是不是平衡的。

 剑指offer面试题 求二叉数的深度_第4张图片

我们只需要给上面的函数传入二叉树的根结点以及一个表示结点深度的整形变量即可

剑指offer面试题 求二叉数的深度_第5张图片






你可能感兴趣的:(剑指offer面试题 求二叉数的深度)