查找二叉树一个节点的左右子树
#include "stdio.h"#include "stdlib.h"
int n=0;
int m=0;
typedef struct BiTNode
{
char data;
BiTNode *Lchild,*Rchild; // 左右孩子指针
}BiTNode,*BiTree;
void CreateBiTree(BiTree &T)
{
char ch;
printf("输入结点值:\n");
scanf("%c",&ch);
getchar();
if(ch=='0') // 空
T=0;
else
{
T=(BiTree)malloc(sizeof(BiTNode));
T->Lchild=0;
T->Rchild=0;
if(!T)
return;
T->data=ch; // 生成根结点
CreateBiTree(T->Lchild); // 构造左子树
CreateBiTree(T->Rchild); // 构造右子树
}
}
void preorder (BiTNode *root)
{//先序遍历root指向根的二叉树
if (root!=0) {
printf("%c ", root->data);//访问根结点,这里只是把根结点的值打印出来,
//你可以做其它处理,比如修改、判别等。
preorder(root->Lchild); //先序遍历根的左子树
preorder(root->Rchild); //先序遍历根的右子树
}//if
}//preorder
void chazhao(BiTNode *T,char x)
{
if(T->date==x)
{
n=T->Lchild;
m=T->Rchild;
}
chazhao(T->Lchild,x);
chazhao(T->Rchild,x);
// if(num1!=0||num2!=0)
// n++;
// return n;
}
void main()
{
BiTNode *T;
CreateBiTree(T);
preorder(T);
chazhao(T,'2');
printf("\n%d\n%d",n,m);
}