二叉树查找插入操作 指针设置问题
//二叉树查找插入操作 #include<iostream>
#include<stack>
using namespace std;
typedef int Status;
#define false 1
#define ture 0
typedef struct BiTNode
{
int data;
struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;
Status SearchBST(BiTree T,int key,BiTree f,BiTree *p)
{
if(!T)//查找不成功
{
*p=f;//指针f指向T的双亲,初始值为NULL
return false;
}
else if(key==T->data)//查找成功
{
*p=T;//指针p只想该数据元素的结点
return ture;
}
else if(key<T->data)
return SearchBST(T->lchild,key,T,p);
else
return SearchBST(T->rchild,key,T,p);
}
Status InsertBST(BiTree *T,int key)
{
BiTree p,s;
if(!SearchBST(*T,key,NULL,&p))//查找不成功
{
s=(BiTree)malloc(sizeof(BiTNode));
s->data=key;
s->lchild=s->rchild=NULL;
if(!p)
*T=s;//插入s为新的根结点
else if(key<p->data)
p->lchild=s;
else
p->rchild=s;
return ture;
}
else
return false;
}
void Preorder(BiTNode *root) //先序遍历打印二叉树
{
if(root!=NULL)
{
printf("%c ",root->data);
Preorder(root->lchild);
Preorder(root->rchild);
}
}
int main()
{
int i;
int a[10]={62,88,58,47,35,73,51,99,37,93};
BiTree T=NULL;
for(i=0;i<10;i++)
{
InsertBST(&T,a[i]);
}
for(i=0;i<10;i++)
{
cout<<a[i]<<" ";
}
cout<<endl;
cout<<"前序遍历为:";
Preorder();//请教一下各位大神这里面的参数应怎么写,怎样让头指针指向树第一个结点。
system("pause");//上面BiTree T=NULL将头指针指向空了,
//这是上面程序的需要,可我想遍历一下,没想出来怎么做。
return 0;
}