题解 | #二叉排序树#

二叉排序树

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

#include <iostream>
using namespace std;
struct Bitree {
    Bitree* left;
    Bitree* right;
    int val;//节点的值
};
Bitree* creatnode(int data) { //创建二叉树节点
    Bitree* node = (Bitree*)malloc(sizeof(Bitree));
    node->val = data;
    node->left = NULL;
    node->right = NULL;
    return node;
}
Bitree* paixuCreat(Bitree* root, int value,int* parent) //用parent记录父亲节点的值
{ 
    if (root == NULL) { //当前节点为空
        return creatnode(value);
    }
    if (value < root->val) {
        *parent = root->val;
        root->left = paixuCreat(root->left, value, parent);
    } else {
        *parent = root->val;
        root->right = paixuCreat(root->right, value, parent);
    }
    return root;
}
int main() 
{
    Bitree* root = NULL;
    int N, value;
    cin >> N;
    int* parentNodes = (int*)malloc(N * sizeof(int));//创建数组以保存父亲节点的值
    parentNodes[0] = -1;//第一个值默认为-1
    for (int i = 0; i < N; i++) {
        cin >> value;
        int parent = -1;
        root = paixuCreat(root, value, &parent);
        parentNodes[i] = parent;//记录父亲节点
    }
    for (int i = 0; i < N; i++) {
        cout << parentNodes[i] << endl; //输出父亲节点
    }
}
// 64 位输出请用 printf("%lld")

创建排序二叉树的同时用parent变量记录其父节点然后保存在数组里,最后再输出

全部评论

相关推荐

不愿透露姓名的神秘牛友
今天 14:08
点赞 评论 收藏
分享
07-03 11:02
中山大学 C++
字节刚oc,但距离九月秋招很近了有两段互联网实习,非腾讯字节。不敢赌转正,现在在纠结去还是不去如果实习俩月离职会有什么后果吗
阿城我会做到的:不去后悔一辈子,能否转正取决于ld的态度,只要他不卡,答辩就是走流程,个人觉得可以冲一把
投递字节跳动等公司8个岗位
点赞 评论 收藏
分享
06-13 10:15
门头沟学院 Java
想去夏威夷的大西瓜在...:我也是27届,但是我现在研一下了啥项目都没有呀咋办,哎,简历不知道咋写
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-03 18:13
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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