搜索二叉树是一个特殊的二叉树
一棵二叉搜索树可被递归地定义为具有下列性质的二叉树:对于任一结点,
其左子树中所有结点的键值小于该结点的键值;
其右子树中所有结点的键值大于等于该结点的键值;
其左右子树都是二叉搜索树。
#include<cstring>
#include<algorithm>
#include<cstdlib>
#include<cstdio>
#include<cmath>
#include<iostream>
using namespace std;
typedef struct BinaryTree
{
struct BinaryTree *left,*right;
int data;
}BinTreeNode;
BinTreeNode *CreateBST(BinTreeNode *node,int value)
{
if(node==NULL)
{
//node=new BinTreeNode;
//if(node==NULL) exit(1);
if((node=(BinTreeNode *)malloc(sizeof(BinTreeNode)))==NULL)
{
cout<<"分配内存失败"<<endl;
exit(1);
}
node->left=NULL;
node->right=NULL;
node->data=value;
}
else if(node->data>value) node->left=CreateBST(node->left,value);
else node->right=CreateBST(node->right,value);
return node;
}
BinTreeNode *tree=NULL;
int main()
{
int length;
// int PreOrder[50];
// int PostOrder[50];
int arry[50];
cin>>length;
for(int i=0;i<length;i++)
cin>>arry[i];
for(int i=0;i<length;i++)
{
tree=CreateBST(tree,arry[i]);
}
cout<<tree->data<<endl;
//cout<<tree->right->left->data<<endl;
return 0 ;
}