【问题标题】:Recursive and non-recursive traversal of three degree tree三度树的递归和非递归遍历
【发布时间】:2013-10-30 06:31:22
【问题描述】:

我正在尝试编写一个用于三度树的中序遍历(左、节点、中、右)的算法。

下面的算法是否正确?

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 为空,则不应有任何 else 语句 IMO。
  • 所有节点的度数 = 3 或 1
  • @user568109 我只想对三度树执行此操作...它可以工作或附带一些问题..??

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


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2018-07-12
    • 2014-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多