6_44_二叉树中值为x的节点为根的子树的深度
#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)); } }
版权声明:本文为博主原创文章,未经博主允许不得转载。