题解 | #二叉排序树#

二叉排序树

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变量记录其父节点然后保存在数组里,最后再输出

全部评论

相关推荐

点赞 评论 收藏
分享
07-20 11:20
门头沟学院 Java
Alan_01:看到都是黑马点评跟苍穹外卖我就放心了
无实习如何秋招上岸
点赞 评论 收藏
分享
09-11 10:24
武汉大学 运营
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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