可以使用两个函数对二叉树进行编码l
和r
这样,对于anode n
,l(n)
给an
,r(n)
的左子
给n
的正确孩子。
树枝是从根到叶的路径
一根树枝到一片叶子的长度是
从根到叶的路径上的弧。
设MinBranch(l,r,x)
为
取由l和r函数编码的二叉树
以及二叉树的根节点x和
返回二进制文件的最短分支的长度
树。
给出该算法的伪代码。
好吧,基本上这就是我到目前为止的想法:
MinBranch(l, r, x)
{
if x is None return 0
left_one = MinBranch(l, r, l(x))
right_one = MinBranch(l, r, r(x))
return {min (left_one),(right_one)}
}
很明显这不是很好也不完美我会很高兴如果
人们可以帮我得到完美的工作-任何帮助
将不胜感激。
最佳答案
我怀疑有人会直接帮你解决家庭作业。提示:当树变大时,返回值一定会变高,对吧?但是,除了0,我在函数中看不到任何数字文本,也看不到加法运算符你将如何返回更大的数字?
关于同一问题的另一个角度是:无论何时编写递归函数,枚举“我应该停止调用自己的所有条件是什么”都会有帮助我在每种情况下都会返回什么?”