#include <iostream>
#include <cstdio>
using namespace std;
typedef struct BTNode
{
int data;
BTNode *lchild, *rchild;
}BTNode,*BTree;
//返回根为T的树深度
int get_Depth(BTree T)
{
int m,n;
if(T)
{
m=get_Depth(T->lchild);
n=get_Depth(T->rchild);
return m>=n ? m+1:n+1;
}
else
return 0;
}
//求二叉树中以值为x的结点为根的子树深度
int Depthx(BTree T, int x)
{
int m,n;
if(T)
{
if(T->data==x)
return get_Depth(T);
else
{
m=Depthx(T->lchild, x);
n=Depthx(T->rchild, x);
return m>n ? m:n;
}
}
else return 0;
}
//创建二叉树
void create_BTree(BTree &T)
{
int x;
cin>>x;
if(x==0) T=NULL;
else
{
T=new BTNode;
T->data=x;
create_BTree(T->lchild);
create_BTree(T->rchild);
}
}
int main()
{
BTree T;
int x;
create_BTree(T);
cout<<"输入要查找的节点x"<<endl;
while(cin>>x)
cout<<"根节点为"<<x<<"的子树的深度为"<<Depthx(T,x)<<endl;
return 0;
}
求二叉树中以x为值的根结点的子树的深度
最新推荐文章于 2024-08-20 20:45:00 发布