二叉树中区间值的向量
Vector of values from the interval in binary tree
我正在使用二叉树,我想要的是制作一个包含元素的向量,这些元素实际上是节点的值,这些节点是两个已经给定的节点之间的键。查看代码并尝试理解:
vector<ValueType> MakeVector ( vector<ValueType> &v, Node* first, Node* last, Node* temp) const
{
if( temp != 0 && temp->_key >= first->_key && temp->_key <= last->_key )
{
MakeVector(v, first, last, temp->_left);
v.push_back(temp->_value);
makeVector(v, first, last, temp->_right);
}
}
vector<ValueType> from_to(KeyType a, KeyType b) const
{
vector<ValueType> v;
Node* c (FindMaxSmallerThan(b, _root)); //These functions are working fine
if( c == 0 ) return v;
Node* d (FindMinBiggerThan(a, _root));
if( d == 0 ) return v;
if(d->_key > c->_key) return v;
MakeVector( v, d, c, c); /*Here is where my program crashes and it says that I used an ilegal pointer :/ */
return v;
}
多亏了您的建议,我现在纠正了它。我认为这可能会起作用,但仍然不太确定。
vector<ValueType> MakeVector ( vector<ValueType> &v, Node* node, Node* lower, Node* upper) const
{
if( lower->_key == upper->_key )
{
v.push_back(lower->_value);
return v;
}
if( node->_parent != 0 && maximum(node->_parent)->_key >= upper->_key)
inorderVector (v,node->_parent, lower, upper);
else if( node->_parent != 0)
MakeVector(v, node->_parent, lower, upper);
else MakeVector(v, node, lower, upper);
return v;
}
InordeVector看起来像这样:
void inorderVector (vector<ValueType> &v, Node* parent, Node* lower, Node* upper) const
{
if( parent != 0 )
{
inorderVector(v, parent->_left, lower, upper);
if( parent->_key >= lower->_key && parent->_key <= upper->_key )
v.push_back(parent->_value);
inorderVector(v, parent->_right, lower, upper);
}
return;
}
我选择 Inorder,因为必须对向量进行排序。这样,所有键大于上限的节点都将被忽略。
相关文章:
- 写入向量<向量<bool>>
- 函数向量_指针有不同的原型,我可以构建一个吗
- std::向量与传递值的动态数组
- 将值指定给向量(2D)的向量中的某个位置
- 找不到成员对象:没有名为get_event()的成员,也处理多态性和向量
- 如何使用向量的template_back函数
- 尝试通过多个向量访问变量时,向量下标超出范围
- 如何通过派生类函数更改基类中的向量
- C++从另一个类访问公共静态向量的正确方法是什么
- 如何将ampl中的集合表示为c++中的向量
- 变量没有改变?通过向量的函数调用
- 迭代时从向量和内存中删除对象
- 向量 <int> a {N, 0} 和 int arr a[N] = {0} 的时间复杂度有什么区别
- 如何为模板化对象创建模板向量?VS正在投掷C3203
- 计算排序向量的向量中唯一值的计数
- 矩阵向量乘法(cublasDgemv)返回零
- 一对向量构造函数:初始值设定项列表与显式构造
- 将结构向量排序为子组
- 二叉树中区间值的向量
- 给定一个区间向量,输出区间内重叠次数最多的任意一个数字