在二叉树中查找data域等于key的值是否存在,若存在用q指向它;
#include <iostream>
#include<cstdio>
#include<cstdlib>
using namespace std;
typedef struct BTnode{
int data;
struct BTnode *lchild;
struct BTnode *rchild;
}BTnode;
BTnode* createTree()
{
BTnode *p;
int ch;
cin>>ch;
if(ch == 0) //如果到了叶子节点,接下来的左、右子树分别赋值为0
{
p = NULL;
}
else
{
p = (BTnode*)malloc(sizeof(BTnode));
p->data = ch;
p->lchild = createTree(); //递归创建左子树
p->rchild = createTree(); //递归创建右子树
}
return p;
}
int search (BTnode *p,BTnode *&q,int key)//查找data域中是否有key值,若存在用q指向它
{
int k=0;
if(p!=NULL)
{
if(p->data==key)
q=p;//p赋值给q,既q指向值域等于key;
else
{
search(p->lchild,q,key);
if(q==NULL)//提高查找效率,左子树没有查找右子树