三度树的递归和非递归遍历

时间:2013-10-30 06:31:23

标签: c algorithm data-structures tree tree-traversal

我正在尝试为三度树的顺序遍历(左,节点,中间,右)编写算法。

以下是正确的算法吗?

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);
  }
}

1 个答案:

答案 0 :(得分:0)

您错误地打印了节点的值两次。

您无需检查node->mid,因为这是在inorder(node->mid);内检查的。

inorder(node)
{
  if (node)
  {
    inorder(node->left);
    print("%d ", node->value);
    inorder(node->mid);
    inorder(node->right);
  }
}