微软面试题:写程序找出二叉树的深度
2012-03-23 22:47 Rollen Holt 阅读(1022) 评论(0) 收藏 举报一个树的深度等于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;
}==============================================================================
本博客已经废弃,不在维护。新博客地址:http://wenchao.ren
我喜欢程序员,他们单纯、固执、容易体会到成就感;面对压力,能够挑灯夜战不眠不休;面对困难,能够迎难而上挑战自我。他
们也会感到困惑与傍徨,但每个程序员的心中都有一个比尔盖茨或是乔布斯的梦想“用智慧开创属于自己的事业”。我想说的是,其
实我是一个程序员
==============================================================================
浙公网安备 33010602011771号