我正在尝试编写一个三度树的中序遍历(左、节点、中、右)的算法。
下面的算法正确吗?
inorder(node)
{
if (node) {
inorder(node->left);
print("%d", node->value);
if (node->mid) {
inorder(node->mid);
print("%d", node->value);
inorder(node->right);
}
else
inorder(node->right);
}
}
最佳答案
您错误地打印了节点的值两次。
您不需要检查node->mid
,因为这是在inorder(node->mid);
内部检查的。
inorder(node)
{
if (node)
{
inorder(node->left);
print("%d ", node->value);
inorder(node->mid);
inorder(node->right);
}
}
关于c - 三度树的递归和非递归遍历,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19675356/