gpt4 book ai didi

c - 二叉树上的最大堆

转载 作者:行者123 更新时间:2023-11-30 17:42:36 25 4
gpt4 key购买 nike

我正在尝试创建一个函数来创建最大堆树。

问题是我希望我的函数返回这棵树的根,但我不知道该怎么做。我认为这里(1)和这里(2)行将使函数返回插入之前的最后一个节点,并且我想不出一种简单的方法让它返回树的根。

typedef struct node{
int n;
struct node* right;
struct node* left;
}node;

node * f(node* root, int v){
node* p;
if(!root){ //creating new node;
p = malloc(sizeof(node));
p->n = v;
p->right = NULL;
p->left = NULL;
return p;
}

if(v > root->n){ //if v is greater than the node, they'll be swapped.
int aux = root->n;
root->n = v;
return f(root->right, aux); //here(1)
}

//if v is smaller than the node, f will be called to the left node.
if(v < root->n){
int aux = root->n;
return f(root->left, aux); //here(2)
}

return root;
}

最佳答案

为了使函数始终返回根节点,我将带有 //here 注释的两行更改为:

f(root->right, aux); //here(1) 
return root;

f(root->left, aux); //here(2) 
return root;

关于c - 二叉树上的最大堆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20503142/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com