您的位置:首页 > 职场人生

微软面试题:写程序找出二叉树的深度

2012-03-23 22:47 281 查看
一个树的深度等于max(左子树深度,右子树深度)+1。可以使用递归实现。

int DepthOfTree(BiTreeNode* root)
{
if(NULL == root)
{
return 0;
}
return max(DepthOfTree(root->leftChild), DepthOfTree(root->rightChild))+1;
}


也可以采用下面的思路:

类似于递归的先序遍历,层层向下计算,每向下计算一层,深度

                 就加1,CalTreeDepth(PNode pn, unsigned n)中的第二个

                 参数表示上一层的深度,所以程序在调用时, 假设proot为整个

                 树的根节点,则其深度depth为:

                                   unsigned depth = CalTreeDepth(proot, 0);

*/

代码如下:

unsigned CalTreeDepth(PNode pn, unsigned n)
{
static unsigned d = 0;          //使用static变量d来记录出现的最大深度
if(pn)
{
if(n+1 > d)
d = n+1;
CalTreeDepth(pn->left, n+1);
CalTreeDepth(pn->right, n+1);
}
return d;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: