你们能帮我算法做这些事吗?我已经预订,按顺序和后序实现了,我得到了提示,用这些命令之一遍历树。我使用dotty标记(或“访问”)节点。
深度是从根到底叶的边数,所以每次移动时,我都会在深度上加+1?那样的东西?
不知道后代的算法。他们询问特定节点本身的节点数量。
这些是普通的树木。
答案 0 :(得分:3)
这是家庭作业的问题吗?我的回答是假设它是作业。
树是递归数据结构,因此对它们进行操作的算法通常是递归的。递归算法需要基本案例和归纳案例。对于树,基本情况将是您在访问叶节点(即没有子节点的节点)时执行的操作。归纳案例将是您在访问内部节点(即至少有一个孩子的节点)时所执行的操作。
用于计算树的深度(或“高度”):
用于计算后代数:
我鼓励你提出澄清问题。
答案 1 :(得分:1)
depth(tree) = 1+ max(depth(tree.left), depth(tree.right));
descendants(tree) = descendants(tree.left) + descendants(tree.right);
对于其中一个,为空指针返回0将结束递归。