【发布时间】:2021-02-24 13:45:19
【问题描述】:
我的预购方法在 main 中不起作用,但数组 elem 已正确形成(我通过打印每个步骤进行检查)。定义中使用的所有函数/方法都可以正常工作。我认为问题的出现是因为“return elem;”行。任何人都可以提出任何想法,这太重要了。
T* TreeNode<T>::preorder()const
{
T* elem = new T[elCount(left)+elCount(right)+1];
elem[0] = data;
TreeNode<T>* curr = left;
Stack<TreeNode<T>*> st;
if (right) {
st.push(right);
}
int i = 1;
while (curr) {
elem[i++] = curr->getData();
//std::cout << elem[i - 1];
if (curr->getRight())
st.push(curr->getRight());
curr = curr->getLeft();
if (!curr)
{
curr = st.getTop();
st.pop();
} }
return elem;
}
【问题讨论】:
-
此问题显示的代码不符合 stackoverflow.com 对 minimal reproducible example 的要求。这意味着这里的任何人都不太可能最终回答这个问题。但最多只能猜测。你应该edit你的问题来展示一个最小的例子,不超过一两页代码(“最小”部分),其他人都可以剪切/粘贴、编译、运行和重现所描述的问题(“可重现”部分)完全如图所示(这包括任何辅助信息,例如程序的输入)。请参阅How to Ask 了解更多信息。
-
您如何确定它不起作用? (另外,
std::vector是你的朋友。) -
如果每次有人(包括我自己)说“所有这些其他功能都正常工作,所以问题一定在这里”时我有一块钱,但事实证明他们没有,我会稍微富裕一点的人。不过,
return elem;绝对不是问题的根源。 -
@SamVarshavchik 感谢您的建议。我会注意的。
标签: c++ data-structures return binary-tree preorder