gpt4 book ai didi

c++ - 多参数树遍历

转载 作者:行者123 更新时间:2023-11-30 17:02:52 26 4
gpt4 key购买 nike

我正在尝试遍历一棵树并以前缀、后缀和中缀表示法打印出其内容。目前,程序仅打印出输入表达式的一个运算符。

我见过递归完成此操作的方法,但它们都在其函数中使用了一个参数,该参数与 Node 的类直接相关。 (Example)

如何使用多个参数递归遍历树的左右节点?或者说这是一个可行的选择吗?给我带来问题的代码是“expressiontree.cpp”中的第 32-42 行,但我已经包含了头文件和代码输出上下文的示例。

CODE (该链接指向 GitHub,因为 native 文本编辑器给我带来了一些问题。)

感谢你们提出的任何想法!

最佳答案

这可以使用多个参数递归地完成,但每次都必须传递一个指向“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++] = '\0'; //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++ - 多参数树遍历,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36368579/

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