死亡伯爵


私信TA

用户名:1124615130

访问量:18956

签 名:

Life is not what we have gained but what we have done.

等  级
排  名 890
经  验 3406
参赛次数 1
文章发表 33
年  龄 19
在职情况 学生
学  校 XiDianUniversity
专  业 ComputerScience

  自我简介:

解题思路:
重点都注释了

温馨提示:

判断自己的BST建立得对不对,只需要进行中序遍历,会得到一个从小到大的有序序列。


参考代码:

#include<cstdio>

#include<malloc.h>

typedef struct Node{

    int val;

    struct Node* left;

    struct Node* right;

}*TreeNode;


struct Node* newNode(int val){//这个函数用于生成一个值为val的节点

    TreeNode temp=(TreeNode)malloc(sizeof(struct Node));

    temp->val=val;

    temp->left=temp->right=NULL;//记得初始化

    return temp;

}


void buildBST(TreeNode& root,int val){//递归建立BST,&一定要有

    if(root==NULL){

        root=newNode(val);

        return;

    }

    if(root->val==val)//BST定义就是节点不能重复,所以遇到值相同的节点只需要建立一个就行了

        return;

    if(root->val<val){

        buildBST(root->right,val);

        return;

    }else

    buildBST(root->left,val);

}


TreeNode build(int nodeNum){

    TreeNode root=NULL;

    for(int i=0;i<nodeNum;i++){

        int val;

        scanf("%d",&val);

        buildBST(root,val);

    }

    return root;

}


void inorderTraversal(TreeNode root){

    if(root){

        inorderTraversal(root->left);

        printf("%d ",root->val);

        inorderTraversal(root->right);

    }

}


void search(TreeNode root,int num){//查找

    for(int i=0;i<num;i++){

        int obj;

        scanf("%d",&obj);

        TreeNode temp=root;

        while(temp!=NULL){

            if(temp->val==obj)

                break;

            if(temp->val>obj){

                temp=temp->left;

                continue;

            }

            if(temp->val<obj){

                temp=temp->right;

                continue;

            }

        }

        if(temp!=NULL)

            printf("1 ");

        else

            printf("0 ");

        }

}


int main(){

    int num,searchNum;

    scanf("%d%d",&num,&searchNum);

    TreeNode root=build(num);

    search(root,searchNum);

    return 0;

}


 

0.0分

0 人评分

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换万能编程问答  

代码解释器

代码纠错

SQL生成与解释

  评论区