gpt4 book ai didi

c++ - 静态变量没有增加

转载 作者:行者123 更新时间:2023-11-28 04:16:23 24 4
gpt4 key购买 nike

我遇到了一个问题,要在 BST 中找到 Kth 最小的元素。

我写的函数是:

//THE FUNCTION TAKES ROOT OF TREE AND THE VALUE OF K AS INPUT
int KthSmallestElement(Node *root, int k)
{
static int indicator=0;
static Node* temp_root=NULL;
static int count=0; //PROBLEM
int i=0;

if(indicator==0)
{
indicator=0;
temp_root=root;
}
if(root)
{
i=KthSmallestElement(root->left,k);
if(i!=0)
{
indicator=0;
temp_root=NULL;
count=0;
return i;
}

++count;
printf("count %d k %d\n",count,k);
printf("root.data %d\n\n",root->data);

if(count==k)
{
return root->data;
}
i=KthSmallestElement(root->right,k);
if(i!=0)
{
indicator=0;
count=0;
temp_root=NULL;
return i;
}

}
if(temp_root==root)
{
indicator=0;
count=0;
temp_root=NULL;
}
return 0;
}

我必须提供的输入类型是:

输入:

1              //NO OF TEST CASES
11 //NO OF NODES IN THE BST
962 29 643 291 8 298 133 481 175 916 948 //VALUE OF NODES IN BST
6 //VALUE OF K

输出:

count 1 k 6
root.data 8

count 1 k 6
root.data 29

count 1 k 6
root.data 133

count 1 k 6
root.data 175

依此类推按升序打印所有剩余值。现在我真的很困惑为什么 count 的值没有增加。由于控制语句在跨越 count 增量操作后到达,那么为什么它无法增加值?编译器是g++ 5.4

最佳答案

您的代码中有一个错误,这似乎是无意的。将 indicator 设置为 0 以外的某个值:

if(indicator==0)
{
//indicator=0; // MISTAKE
indicator=1 //OR SOME VALUE OTHER THAN 0
.
.
.
}

在此count 之后将按预期工作

关于c++ - 静态变量没有增加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56496476/

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