【发布时间】:2013-03-10 16:23:37
【问题描述】:
为了正常工作,我有以下功能来打印树:
void PrintInOrder(TTreeNode const * const pRoot) {
if (pRoot != 0) {
PrintInOrder(pRoot->pLeft);
if(pRoot->pLeft) std::cout << ",";
std::cout << pRoot->Data;
if(pRoot->pRight) std::cout << ",";
PrintInOrder(pRoot->pRight);
}
}
这是我的预购打印功能:
void PrintPreOrder(TTreeNode const * const pRoot) {
if (pRoot != 0) {
std::cout << pRoot->Data << std::endl;
PrintPreOrder(pRoot->pLeft);
PrintPreOrder(pRoot->pRight);
}
}
因为我太笨了,不知道如何像 inorder 函数那样分开打印,希望大家能帮帮我!
谢谢!
更新:
预购功能现在可以使用,那么这是正确的后购功能吗?
void PrintPostOrder(TTreeNode const * const pRoot) {
if (pRoot != 0) {
PrintPostOrder(pRoot->pLeft);
if(pRoot->pLeft) std::cout << ",";
PrintPostOrder(pRoot->pRight);
if(pRoot->pRight) std::cout << ",";
std::cout << pRoot->Data;
}
}
【问题讨论】:
-
欢迎来到 Stack Overflow。请尽快阅读FAQ。在
PrintInOrder()函数中,您已经得到了 90% 或更多的答案。将其调整为PrintPreOrder()和PrintPostOder()函数是一项简单的编辑练习。