【问题描述】
计算二叉树的深度和叶子结点数
【输入形式】
输入二叉树的先序遍历序列建立二叉树。
【输出形式】
输出二叉树的叶子结点数和深度。
【样例输入】
A
B
C
#
#
#
#
【样例输出】
Leaves:1
Depth:3
求给定二叉树的深度:
二叉树的深度就是二叉树中结点的最大层次。如果二叉树是空树,则深度为0;否则,分别求二叉树根左子树和右子树的深度,取其中最大值加一就是该 二叉树的最大深度。
递归计算公式为:Depth(T)={0;当T==NULL; }
{max(Depth(T->lchild),Depth(T->rchild))+1;当T!=NULL;}
如下:
int depth(BiTree t)
{
//此处补充代码,求取二叉树的深度
int hl,hr;
if(t==NULL)return 0; //若数为空则返回0
else
{
hl=depth(t->lchild); //递归求左子树的深度
hr=depth(t->rchild); //递归求右子树的深度
if(hl>hr)return (hl+1);