面试题之求二叉树的深度

来源:互联网 发布:淘宝上买淘宝小号 编辑:程序博客网 时间:2024/05/22 00:05

题目:输入一棵二叉树的根节点,求该树的深度。从根节点到叶子结点一次经过的结点形成树的一条路径,最长路径的长度为树的深度。根节点的深度为1。

struct BinaryTreeNode{int m_nValue;BinaryTreeNode *m_pLeft;BinaryTreeNode *m_pRight;};
        如果一棵树只有一个结点,它的深度为1。如果根结点只有左子树而没有右子树,那么树的深度应该是其左子树的深度加1;同样如果根结点只有右子树而没有左子树,那么树的深度应该是其右子树的深度加1。如果既有右子树又有左子树,那该树的深度就是其左、右子树深度的较大值再加1。

基于以上思路,用递归代码将非常简单,具体如下:

//递归求深度int TreeDepth(BinaryTreeNode *pRoot){if (pRoot==NULL)return 0;//左子树深度int nleft=TreeDepth(pRoot->m_pLeft);//右子树深度int nRight=TreeDepth(pRoot->m_pRight);//返回深度大的子树深度加1return (nleft>nRight)?(nleft+1):(nRight+1);}



0 0
原创粉丝点击