题目
思路
二叉搜索树的建树操作
核心代码
typedef struct TreeNode* BST;
struct TreeNode{
int data;
BST left;
BST right;
};
BST insert(BST Tree,int data)
{
if(Tree==NULL){
Tree=(BT)malloc(sizeof(struct TreeNode));
Tree->data=data;
Tree->left=Tree->right=NULL;}
else{
if(data>Tree->data) Tree->right=insert(Tree->right,data);
if(data<Tree->data) Tree->left=insert(Tree->left,data);}
return Tree;
}
BST PlantTree(int N){
int data;
BST Tree;
Tree=(BST)malloc(sizeof(struct TreeNode));
scanf("%d",&data);
Tree->data=data;
Tree->left=Tree->right=NULL;
for(int i=1;i<N;i++){
scanf("%d",&data);
Tree=insert(Tree,data);}
return Tree;
}
int check(BTS T1,BST T2)
{
if(T1!=NULL&&T2!=NULL){
if(T1->data!=T2->data) return 0;
else return((check(T1->left,T2->left)==1)&&(check(T1->right,T2->right)==1));
}
else{
if(T1==T2) return 1;
else return 0; }
}
/*有关答案存储,可采用队列*/