关键词:递归,插入,查找
//二叉搜索树
#include <iostream>
using namespace std;
struct Node
{
int data;
Node* left;
Node* right;
};
Node* GetNewNode(int data)//为新节点预留空间
{
Node* newNode= new Node();
newNode->data=data;
newNode->left=newNode->right=NULL;
return newNode;
}
Node* Insert(Node* root,int data)//插入新节点
{
if(root==NULL)
{root=GetNewNode(data);}
else if(data<=root->data)
{root->left=Insert(root->left,data);}
else
{root->right=Insert(root->right,data);}
return root;
}
bool Search(Node* root,int data)//判断是否存在某节点
{
if(root==NULL) return 0;
else if(root->data==data) return 1;
else if(data<=root->data) return Search(root->left,data);
else return Search(root->right,data);
}
int main()
{
Node* root=NULL;
root=Insert(root,15);
root=Insert(root,10);
root=Insert(root,20);
int n;
cin>>n;
if(Search(root,n)==1) cout<<"Found"<<endl;
else cout<<"Not Found"<<endl;
}