运行无限循环的最小二叉树问题
Minimum binary tree problem running infinite loop
此C++代码不会在 Vscode 中终止。你能解释一下为什么吗?
这是代码
最少两个数字
int min(int x,int y)
{
if(x<y)
return x;
else
return y;
}
在二叉树中填充最少的兄弟姐妹作为父级
void minimumtree(int arr[], int b, int n)
{
if(b==0)
return;
else
{
for(int i=0;i<n;i+2)
{
int x=(b+i)/2;
arr[x]=min(arr[b+i],arr[b+i+1]);
}
minimumtree(arr,b/2,n/2);
}
}
int main()
{
叶子输入 n- 叶数,b - 数组中第一个叶子的索引开头
int n,b; cin>>n>>b; int arr[n+b];
for(int i=0;i<n;i++)
cin>>arr[b+i];
查询输入
int t;
cin>>t;
int q[t];
for(int i=0;i<t;i++)
cin>>q[i];
minimumtree(arr,b,n);
查询输出
for(int i=0;i<t;i++)
cout<<arr[q[i]];
return 0;
}
更清楚可能会有所帮助
int min(int x,int y) {
return x<y ? x: y;
}
// filling the minimum of siblings as parent in a binary tree
void minimumtree(int arr[], int b, int n) {
if(b) {
for(int i=0; i<n; i+=2)
{
int x=(b+i)/2;
arr[x]=min(arr[b+i],arr[b+i+1]);
}
minimumtree(arr,b/2,n/2);
}
return;
}
int main() {
// leaf input n- number of leaves, b - beginning of index of the first leaf in an array
int n,b;
cin>>n>>b;
int *arr = new int[n+b]; // size is in run-time so define or set it dynamically
for(int i=0; i<n; ++i)
cin>>arr[b+i];
// query input
int t;
cin>>t;
int q = new int[t];
for(int i=0; i<t; ++i)
cin>>q[i];
minimumtree(arr,b,n);
// query output
for(int i=0;i<t;i++)
cout<<arr[q[i]];
return 0;
}
相关文章:
- 从父数组测试用例构造二叉树失败
- 打印时有二叉树问题.用户输入不打印任何内容
- 试图找到二叉树的深度
- 二叉树结构平衡,使用递归时EXC_BAD_ACCESS
- 指向二叉树中新节点的指针
- 我试图用这段代码找到二叉树的高度,但它一直返回 0,有人可以告诉我为什么吗?
- C++:如何计算二叉树中其值模块高度小于 2 的节点数?
- 二叉树级别顺序遍历在leetcode中
- 运行无限循环的最小二叉树问题
- C++ 的二叉树编码问题?
- 如何修复关卡顺序遍历问题(二叉树)的无限循环错误
- 我的构建二叉树解决方案有什么问题?
- 在二叉树中插入/查找问题
- 按顺序打印时遇到问题,二叉树的后顺序等
- 打印出我的二叉树时出现问题
- 线程内二叉树的插入或顺序遍历有什么问题
- 二叉树析构函数问题
- 验证二叉树的小问题
- 我的二叉树类节点上的问题
- c++递归打印二叉树的顺序问题