很抱歉,这是我第一次在stackoverflow中提问。我刚刚阅读了常见问题解答,知道我违反了规则。我不仅仅是在应对和粘贴问题。我使用有序遍历方法进行递归,检查节点是否是5的倍数,我不知道接下来该做什么。我应该使用标志来检查什么吗?
void findNodes(BSTNode<Key,E> *root) const
{
if(root==NULL) return;
else
{
if(root->key()%5==0)//I know it's wrong, but I don't know what to do
{
findNodes(root->left());
cout<<root->key()<<" ";
findNodes(root->right());
}
else
{
findNodes(root->left());
findNodes(root->right());
}
}
}
替换以下内容
cout<<root->key()<<" ";
随着
if(root->left)
{
if(root->left->left)
cout<<root->left->left->key()<< " ";
if(root->left->right)
cout<<root->left->right->key()<< " ";
}
if(root->right)
{
if(root->right->left)
cout<<root->right->left->key()<< " ";
if(root->right->right)
cout<<root->right->right->key()<< " ";
}
试试这个:
int arr[height_of_the_tree]; //arr[10000000] if needed;
void findNodes(BSTNode<Key,E> *root,int level) const {
if(root==NULL) return;
arr[level] = root -> key();
findNodes(root -> left(), level + 1);
if(2 <= level && arr[level - 2] % 5 == 0) cout << root->key() << " ";
findNodes(root -> right(), level + 1);
}
int main() {
...
findNodes(Binary_search_tree -> root,0);
...
}
打印祖父母是5的倍数的节点很复杂,因为您必须“查找”树。如果您将问题视为找到5的倍数的所有节点并打印它们的子节点,则会更容易,因为您只需沿着树往下走。
void printGrandChildren(BSTNode<Key,E> *root,int level) const{
if(!root) return;
if(level == 2){
cout<<root->key()<<" ";
return;
}else{
printGrandChildren(root->left(),level+1);
printGrandChildren(root->right(),level+1);
}
}
然后修改您的findNodes为
void findNodes(BSTNode<Key,E> *root) const
{
if(root==NULL) return;
else
{
if(root->key()%5==0)
{
printGrandChildren(root,0);
}
else
{
findNodes(root->left());
findNodes(root->right());
}
}
}
问题内容: 问题是这样的:我有一个抽象类,该抽象类在其构造函数中执行某些工作,还有一组实现抽象类的子类: 然后,需要定制具体的类,一种解决方案是扩展具体的类: 但是问题在于自定义类仅需要调用抽象类的构造函数,而无需调用具体类的构造函数。 您如何实现的?更改班级关系的建议是有效的。 编辑:具体示例是ConcreteClass1和CustomizedClass1具有不同的数据集(ConcreteDat
我刚刚开始使用ReactJs开发,并一直遵循serverless-stack.com教程。我已经准备好扩展应用程序并创建一个模板,带有n个子组件,但是在管理孙子组件之间的用户会话时遇到了麻烦。 我有管理用户会话的App.js。但是我在孙子组件中有我的注销按钮,我无法让它调用App.js signOut()函数。 App.js 我的布局组件有一系列不同的组件,如页眉、页脚、导航等。。 最后,我的Na
接收字节数组(表示任何内容:某种有线格式、某种形式的编码数据、带有嵌入“文本”的二进制数据等)。我希望能够以以下形式打印数组: 作为十六进制字符串 作为“可打印”文本 第一种情况部分是出于调试的原因,但也可以在非调试模式下使用。第二种情况纯粹是出于调试的原因,并允许人类与其他信息源进行比较。 如果任何人有如何实现这一点的信息,我将非常感谢。
我有以下BST供参考。英国夏令时 假设最小值:9 和最大值:20 它满足所有条件,对于每个节点 (X),左侧子树中的所有节点都小于,并且右侧子树中的所有节点都大于 X 的值。 我在创建打印所有值的函数(成员函数,因此它可以访问根节点)时遇到了问题。具体来说,假设我的当前节点是10,但是我仍然需要检查左右两边的子树。我不能在参数中传递节点(否则我会这样做?),所以我要实现这个功能 此外,函数应该只访
给定一个未排序的节点数组,其中节点定义为: 每个节点都有自己唯一的id。< code>parent_id在树中标识其父级。问题是如何对树进行前序遍历?(不一定是二叉树) 这是一个困扰我好几天的面试问题。我能想到的是使用哈希映射<code>映射
问题内容: 在我的字节数组中,我具有一条消息的 哈希 值,该值由一些负值和正值组成。使用该语句可以轻松打印正值。 现在如何获得负值? 问题答案: 好吧,如果您乐于以十进制格式打印它,则可以通过屏蔽使其变为正数: 但是,如果要打印散列,则使用十六进制会更常规。关于堆栈溢出,还有很多其他问题,这些问题将Java中的二进制数据转换为十六进制字符串。