具有多个参数的树遍历
Tree Traversal with multiple parameters
我正试图遍历一个树,并用前缀、后缀和中缀表示法打印出它的内容。目前,程序只打印出所输入表达式的一个运算符。
我看到过递归完成这一过程的方法,但它们都在函数中使用了一个参数,该参数与Node的类直接相关。(示例)
如何使用多个参数递归遍历树的左右节点?或者这是一个可行的选择吗?给我带来问题的代码是"expressiontree.cpp"中的第32-42行,但我已经包含了头文件和代码为上下文输出的示例。
CODE(链接指向GitHub,因为原生文本编辑器给了我一些问题。)
谢谢你们的任何想法!
这可以用多个参数递归完成,但每次都必须传递一个指向"ETreeNode"实例的指针,如下所示:
bool ETreeNode::preorder(ETreeNode* currentNode, char* s, int& n, const int& len){
bool error = false;
if (!currentNode) // insure that the "currentNode" is not NULL
return true; // you can change this to implement your "error" variable if you want to
//YOUR CODE GOES HERE
if (m_bIsOperator)
{ //operator node
s[n++] = m_chOp; //append operator character to s
preorder(currentNode->m_pLeftChild, s, n, len); // move to the next left node
preorder(currentNode->m_pRightChild, s, n, len); // move to the next right node
s[n++] = ' '; //zero terminator
} //if
else
{ //number node
char buffer[32]; //temporary character buffer
sprintf(buffer, "%d", m_nValue); //print number into buffer
strcat((char*)(s + n), buffer); //append buffer to s
} //else
return error;
} //preorder
问题:您的数据树是中缀顺序吗?
您将想要实现一些代码,以确保"n"永远不会等于或大于"len"。
您还希望实现一种方法,防止程序在每次迭代后都编写零终止符。
相关文章:
- 有什么方法可以遍历结构吗
- 在循环中按顺序遍历成员变量
- 遍历模板参数
- 在遍历处理程序的向量时注册和注销处理程序
- C++RapidXml-使用first_node()遍历以修改XML文件中节点的值
- 遍历并行数组以确定C++中的最大数字
- 遍历顺序由 std::文件系统directory_iterator给出
- 遍历链表时的无限循环
- 如何在可变参数模板函数中遍历可变参数元组?
- C++类对象 - 遍历基于参数的对象
- 遍历地图并将该对用作参考参数 C++11
- 遍历模板参数包,没有争论的专业化的作用是什么?
- 编写一个通用遍历函数,允许灵活地处理具有不同参数的多个函数
- 如何遍历可变参数模板以填充 POD 数组
- 具有多个参数的树遍历
- C++二进制树遍历和函数指针参数
- 序遍历的二叉搜索树,没有节点指针作为参数
- 在c++中循环遍历函数的所有参数
- For循环遍历模板参数/类型
- 我们是否可以创建一个类似scanf的函数,当所有参数都填充时返回true,否则返回false,而不循环遍历所有变量?