gpt4 book ai didi

c - Binary Heap应该是二叉树还是链表?

转载 作者:行者123 更新时间:2023-12-01 12:56:43 25 4
gpt4 key购买 nike

我有一个任务要实现一个二叉堆。但是,我不确定是否应该将二叉堆实现为二叉树数据结构或简单的双链表。

如果我应该实现为二叉树,我应该如何跟踪树的最后一个元素以便插入新元素?在链表中会容易得多。

那么,二叉堆一定是二叉树吗?如果是,如何跟踪最后一个元素?

注意:在我的作业中有这样的语句:但是你不会将二叉堆实现为数组,而是作为一棵树。

更清楚地说,这是我的节点:

struct Word{
char * word;
int count;
struct Word * parent;
struct Word * left_child;
struct Word * right_child;
}

最佳答案

从问题中提取的解决方案。
作者:@Yunus Eren Güzel
已解决:

经过五个小时的学习,我找到了一种将堆实现为基于指针的树的方法。插入算法是:

insert
node = create_a_node
parent = get_the_last_parent
node->parent = parent
if parent->left==NULL
parent->left=node
else
parent->right=node
end insert

get_last_parent parent,&height
height++
if parent->left==NULL || parent->right==NULL
return parent;
else
int left_height=0,right_height=0;
left = get_last_parent(parent->left,&left_height)
right = get_last_parent(parent->right,&right_height)
if left_height == right_height
height += right_height
return right
else if left_height > right_height
height += left_height
return left
end get_last_parent

关于c - Binary Heap应该是二叉树还是链表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9343111/

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