#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
typedef struct node
{
int data;
struct node*lchild,*rchild;
}tnode,*tree;
tree creat()
{
int x;
tree t;
scanf("%d",&x);
if(x==0)t=NULL;
else
{
t=(tnode*)malloc(sizeof(tnode));
t->data=x;
t->lchild=creat();
t->rchild=creat();
}
return t;
}
tree TreeFind(tree t,int x)//查找二叉树中值为x的节点的指针
{
if(t)
{
tree p;
if(t->data==x)return t;
p=TreeFind(t->lchild,x);if(p)return p;
p=TreeFind(t->rchild,x);if(p)return p;
}
return NULL;
}
int TreeDeap(tree t)//返回指定树节点的深度
{
if(t)
{
int x=1+TreeDeap(t->lchild);
int y=1+TreeDeap(t->rchild);
return x>y?x:y;
}
return 0;
}
int ValDeap(tree t,int x)//返回值为x的节点为根的子树的深度
{
t=TreeFind(t,x);
return TreeDeap(t);
}
int main()
{
// 1 2 4 0 0 5 0 0 3 0 6 0 0
tree t=creat();
int x;tree p;
while(~scanf("%d",&x))
{
printf("%d\n",ValDeap(t,x));
}
}
6_44_二叉树中值为x的节点为根的子树的深度
最新推荐文章于 2022-07-03 11:19:05 发布