【发布时间】:2012-11-20 06:03:19
【问题描述】:
我被要求实现一个递归函数,以深度优先顺序遍历一般树(第一个孩子,下一个兄弟符号)和二叉树。
该函数应在上次访问该节点时打印该节点。例如,对于下面的树,节点应按以下顺序打印。 我想我已经完成了二叉树的功能,但我不能做一般的:
这是我的二叉树代码:
void PostOrder(node* root) {
if (root == NULL)
return;
else {
PostOrder(root->left);
PostOrder(root->right);
printf(‘%c’, root->key);
}
}
谁能帮忙?
【问题讨论】:
-
你为什么不用
DFS? -
通用的怎么定义?一个节点有一个子数组吗?您为一般情况尝试了什么?请详细说明
-
每个节点都有两个指针!第一个指向第一个孩子,另一个指向下一个兄弟(对于一般树)。谢谢
-
你能给出一个算法应该打印不同顺序的树吗?
-
a 作为根。指向它的第一个孩子 b.第一个孩子 (b) 指向下一个兄弟 c。 b 指向它的第一个孩子 (d)->(e)->(f) c 指向它的第一个孩子 (g)。 (g) 指向它的第一个孩子 (h)->(i)。用语言来画它是非常困难的。谢谢
标签: c recursion tree binary-tree depth-first-search