typedef struct tree
{
int data;
struct tree *lchild,*rchild;
}btree; //二叉树结构
void pri(btree *bt)
{
printf("%d ",bt->data);
}
void inorder(btree *bt)//中序遍历输出
{
if(bt!=NULL)
{
inorder(bt->lchild);
pri(bt);
inorder(bt->rchild);
}
}
//****************************************************
//求以t为根的树的深度,递归算法
//****************************************************
int Get_Depth(btree *t)
{
int m,n;
if(!t)
return 0;
else
{
m=Get_Depth(t->lchild);
n=Get_Depth(t->rchild);
return (m>n?m:n)+1;
}
}
//****************************************************
//求二叉树中以值为x的结点为根的子树深度
//****************************************************
void Get_Sub_Depth(btree *t,int x)
{
if(t->data==x)
printf("以结点%d为根节点的子树深度为%d\n",x,Get_Depth(t));
else
{
if(t->lchild)
Get_Sub_Depth(t->lchild,x);
if(t->rchild)
Get_Sub_Depth(t->rchild,x);
}
} |