gpt4 book ai didi

c++ - 为什么这段代码没有在二叉搜索树中插入节点

转载 作者:行者123 更新时间:2023-11-27 23:10:20 25 4
gpt4 key购买 nike

插入模块有什么问题吗?它没有在树中添加新节点。我正在使用 pass-by-ref。

    #include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

struct tNode
{
int data;
tNode* left;
tNode* right;
};

tNode* newNode (int data)
{
tNode* temp = new tNode;
temp->data = data;
temp->left = NULL;
temp->right = NULL;
return temp;
}

void insert (tNode*& root, int value)
{
if (!root)
{
root = newNode (value);
}
else
{
if ( value > root->data )
insert (root->right, value);
else
insert (root->left , value);
}
}

void storeInorder (vector<int>& v, tNode* t)
{
if (!t)
{
storeInorder (v, t->left);
v.push_back(t->data);
storeInorder (v, t->right);
}
}

void printInOrder (tNode* t)
{
if (!t)
{
printInOrder (t->left);
cout << t->data << " ";
printInOrder (t->right);
}

}
int main()
{

vector <int> v = {10, 23, 41, 12, 55, 34, 17, 40, 19,3};
tNode* bst = NULL;
for (int i=0; i<v.size(); ++i)
{
insert (bst, v[i]);
}

printInOrder (bst);


v.clear();
storeInorder (v, bst);

cout << v.size();

for (int i=0; i<v.size(); ++i)
{
cout << v[i] << " ";
}

if (is_sorted (v.begin(), v.end()))
cout << "everything fine";
return 0;
}

最佳答案

printInOrder 函数有错误。当 t 不为空时,打印它。所以应该是

if (t)

不是

if (!t)

关于c++ - 为什么这段代码没有在二叉搜索树中插入节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20727451/

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