#include<stdio.h> #include<stdlib.h> //树的定义(结点定义) typedef char DataType; typedef struct Node { DataType data; struct Node *lchild; struct Node *rchild; } BiNode,*BiTree; //创建树的二叉链表(递归) void CreateBiTree(BiTree *bt) { char ch; ch = getchar(); if(ch=='.') *bt=NULL; else { *bt= (BiNode *)malloc(sizeof(BiNode)); (*bt)->data=ch; CreateBiTree(&((*bt)->lchild)); //生成左子树 CreateBiTree(&((*bt)->rchild)); //生成右子树 } } //输出二叉树的元素(先序) void Print(BiTree bt) { if(bt==NULL) return; else { printf("%c ", bt->data); Print(bt->lchild); Print(bt->rchild); } } int find(BiTree bt,int h,char a) { int t; if(bt) { if(a==bt->data) return h; t=find(bt->lchild,h+1,a); //再次调用函数,层数加一,到左孩子结点。 if(t!=0) return t; else return find(bt->rchild,h+1,a); //再次调用函数,层数加一,到右孩子结点。 } return 0; } //主函数 void main() { int l=1; BiTree T; printf("请输入二叉树:"); CreateBiTree(&T); char ch; printf("请输入要查找的结点:"); getchar(); ch = getchar(); Print(T); printf("\n%d\n",find(T,l,ch)); }