二叉树可以使用两个函数l和r进行编码,这样对于节点n,l(n)给出n的左子节点,r(n)给出n的右子节点。
树枝是从根到叶的路径,树枝到特定叶的长度是从根到该叶的路径上的弧数。
让minbranch(l,r,x)是一个简单的递归算法,用于获取由l和r函数编码的二叉树以及二叉树的根节点x,并返回二叉树的最短分支。
请提供此算法的伪代码。

最佳答案

我看到你已经收到了关于如何获得最短分支长度的答案,但是你的作业实际上是返回分支本身,大概是作为一个节点列表因此,这里有可执行伪代码(即Python)来实际返回分支,使用None表示null:

def MinBranch(l, r, x):
  if x is None: return []
  left_one = MinBranch(l, r, l(x))
  right_one = MinBranch(l, r, r(x))
  if len(left_one) < len(right_one):
    tail = left_one
  else:
    tail = right_one
  return [x] + tail

关于algorithm - 返回二叉树中最短分支长度的算法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1220579/

10-10 21:22
查看更多