计算树的深度和后代

时间:2010-05-05 03:34:36

标签: c++ tree depth dotty

你们能帮我算法做这些事吗?我已经预订,按顺序和后序实现了,我得到了提示,用这些命令之一遍历树。我使用dotty标记(或“访问”)节点。

深度是从根到底叶的边数,所以每次移动时,我都会在深度上加+1?那样的东西?

不知道后代的算法。他们询问特定节点本身的节点数量。

这些是普通的树木。

2 个答案:

答案 0 :(得分:3)

这是家庭作业的问题吗?我的回答是假设它是作业。

树是递归数据结构,因此对它们进行操作的算法通常是递归的。递归算法需要基本案例和归纳案例。对于树,基本情况将是您在访问叶节点(即没有子节点的节点)时执行的操作。归纳案例将是您在访问内部节点(即至少有一个孩子的节点)时所执行的操作。

用于计算树的深度(或“高度”):

  • 基本情况:没有孩子的节点的深度是多少?
  • 归纳案例:鉴于您拥有所有孩子的深度(可能不同),您正在访问的当前节点的深度是多少?

用于计算后代数:

  • 基本情况:没有孩子的节点有多少个后代?
  • 归纳案例:鉴于您知道所有孩子的后代数,您正在访问的当前节点的后代数是多少?

我鼓励你提出澄清问题。

答案 1 :(得分:1)

depth(tree) = 1+ max(depth(tree.left), depth(tree.right));

descendants(tree) = descendants(tree.left) + descendants(tree.right);

对于其中一个,为空指针返回0将结束递归。