主方法调用RootFirst(&root,0);即可,g_nMax 即为最终的树的深度。
int g_nMax = 0;
voild RootFirst(TreeNode *p,int nLevel)
{
if (null == p->left && null == p->right) //当前为叶子节点
{
if (g_nMax < nLevel)
{
g_nMax = nLevel;
return;
}
}
if(null != p->left )
{
RootFirst(p->left,nLevel+1);//遍历左子树
}
if(null != p->right)
{
RootFirst(p->right,nLevel+1);//遍历右子树
}
}
数据结构书里有
int GetBTreeDepth(BTree &T)
{
if(T==NULL) return 0;
else
{
int d1=GetBTreeDepth(T->lchild);
int d2=GetBTreeDepth(T->rchild);
if(d1>=d2) return 1+d1;
else return 1+d2;
}
}