gpt4 book ai didi

c++ - 二叉搜索树 C++

转载 作者:行者123 更新时间:2023-11-30 03:11:57 26 4
gpt4 key购买 nike

我有点懵。我想知道是否以这种方式实现了基于数组的二叉搜索树?

void BST::insert(item &items, const data & aData )
{//helper function.
Parent++;
data *new_data = new data(aData);
this->insert(*new_data);
}

// insert a new item into the BST
void BST::insert(const data &aData )
{
if ( items[Parent].empty )
{
items[Parent].theData = aData;
items[Parent].empty = false;
}
else if ( aData < items[Parent].theData )
{
if ( Parent >= maxSize ) this->reallocate();
this->insert(items[2*Parent+1], aData);
}
else
{
this->insert(items[2*Parent+2], aData);
}
}

//我进行初始化的构造函数。

BST::BST(int capacity) : items(new item[capacity]), 
Parent(0), leftChild(0), rightChild(0), maxSize(capacity)
{
}

最佳答案

我不确定基于数组的二叉树是最好的主意,因为它:

  1. 防止节点平衡(优化不平衡树的查找)
  2. 浪费空间 - 大量空间,尤其是当树不平衡时。

话虽如此,但这是一种有效的方法,只需稍作改动:改变

if ( Parent >= maxSize ) this->reallocate();

if ( 2*Parent >= maxSize ) this->reallocate();

关于c++ - 二叉搜索树 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1760957/

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