SWUST数据结构--二叉树的实现和查找

#include<iostream>
#include<cstdlib>
using namespace std;

int count =0 ,flag=0;
typedef struct node
{
	int data;
	struct node *l,*r;
}Tree;

void Head(Tree *&T)
{
	T=(Tree *)malloc(sizeof(Tree));
	T->l=T->r=NULL;
	cin>>T->data;
}


void Init(Tree *&T,int i)
{
	if(T==NULL)
	{
		T=(Tree *)malloc(sizeof(Tree));
		T->l=T->r=NULL;
		T->data = i;
		return ;
	}
	if(T->data<i)
	{
		Init(T->r,i);
	}
	if(T->data>i)
	{
		Init(T->l,i);
	}	
}

void Find(Tree *&T,int t)
{
	if(T==NULL) return ;  
    count++;  
    if(t==T->data)  
    {  
        cout<<count;  
        flag=1;  
        return;  
    }  
    else if(t<T->data)  
    {  
        Find(T->l,t);  
    }  
    else if(t>T->data)  
    {  
        Find(T->r,t);  
    }  
}

int main()
{
	Tree *T;
	int sum,i,tmp;
	cin>>sum;
	Head(T);
	for(i=2;i<=sum;i++)
	{
		cin>>tmp;
		Init(T,tmp);
	}
	int k;
	cin>>k;
	Find(T,k);
	if(flag==0) cout<<"-1";
	return 0;
	
}


猜你喜欢

转载自blog.csdn.net/qq_41681743/article/details/80214782
今日推荐