题解 | #二叉排序树#

二叉排序树

https://www.nowcoder.com/practice/30a0153649304645935c949df7599602

#include <iostream>
#include <algorithm>
#include "string"
using namespace std;
const int N=100010;
typedef struct Binary_Node{
    int dad;
    int val;
    struct Binary_Node *lchild;
    struct Binary_Node *rchild;
}*BTree,Binary_Node;
int n;
int a[N];

int BST_insert(BTree &T,int x,int father){
    if(T==NULL){
        T= (BTree)malloc(sizeof(Binary_Node));
        T->dad=father;
        T->val=x;
        T->lchild=T->rchild=NULL;
        return 1;
    } else
    if(x<T->val){
        return BST_insert(T->lchild,x,T->val);
    } else if(x>T->val){
        return BST_insert(T->rchild,x,T->val);
    }
    return 0;
}
BTree BST_search(BTree T,int x){
    while(T!=NULL && x!=T->val){
        if(x<T->val)
            T=T->lchild;
        else
            T=T->rchild;
    }
    return T;
}

int main() {
    cin >>n;
    BTree  T=NULL;
    for(int i=0;i<n;i++){
        int x;
        scanf("%d",&x);
        a[i] =x;
        BST_insert(T,x,-1);
    }
    for(int i=0;i<n;i++){
        BTree idx=BST_search(T,a[i]);
        printf("%d\n",idx->dad);
    }
    return 0;
}

全部评论

相关推荐

07-11 22:27
中南大学 Java
程序员牛肉:学历的话没问题。但是没问题的也就只有学历了。 其实你的整体架构是正确的,博客接着干。但是项目有点过于简单了。从后端的角度上讲,你这也就是刚入门的水平,所以肯定约面试够呛。 如果你要应聘后端岗位,那你第一个项目竟然是仿写操作系统。这个你要面试官咋问你。你一定要记住一点,你简历上写的所有的东西,都是为了证明你有能力胜任当前的岗位,而不是为了证明你自己会什么。 如果你只是浅浅的做几个项目,描述也都是烂大街。技术点也都是各种混水类的配置类需求,那你就不要幻想自己能走多远。一定要保持思考,保持学习。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务