gpt4 book ai didi

C++, BTree 插入

转载 作者:太空狗 更新时间:2023-10-29 20:33:42 25 4
gpt4 key购买 nike

您好,这是我的 SearchTree 类中的代码。Node* 是一个 m_info 类型为 int 的结构体,m_left(smaller nodes by info) 和 m_right(bigger nodes by info)

void SearchTree::insert(const int &x) {
Node* tempo = m_root;
while (tempo != nullptr) {
if (tempo->m_info >= x) {
tempo = tempo->m_left;
} else {
tempo = tempo->m_right;
}
}
tempo = new Node(x);
}

我正在尝试向树中插入一个新节点。但看起来我在内存管理中遗漏了一些东西。tempo 是一个指向新节点的指针,但它与 m_root 无关。我在这里很困惑。我真的很喜欢 C++ 的强大功能,但它扭曲了我的逻辑。

我在这里错过了什么?

最佳答案

你不断推进 tempo 直到它等于 nullptr。此时你已经离开了树,你手头上只有一个指向虚无的指针。请注意,特别是该程序无法确定您上次访问哪个节点导致 tempo 变为 null

您需要做的是更早停止一步:虽然 tempo 仍指向一个节点,但下一步将使它指向 。现在你手上还有一个有效的树节点,可以将新分配的节点附加到它上面。

关于C++, BTree 插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53670321/

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