这是我的研究代码中的一个问题,我想知道这样做的有效方法是什么。我省略了不必要的细节,并以一种可以理解问题症结的方式呈现它。
假设我有一棵二叉树,每个节点上都有数字。我想找到从根到叶的树中所有分支的最小总和。下面是一个非常粗略的伪代码。
int minimum(tree){
// Some base cases
left_min = minimum(tree->left);
right_min= minimum(tree->right);
if (left_min < right_min){
return current_value + left_min;
}
else{
return current_value + right_min;
}
}
由此,我可以计算出最小值。但是,如果我想计算给我最小值的节点,我该怎么做?即,如果答案是 14,我想找出树中每个级别的哪些节点加起来得到 14。在对现有函数进行最小更改的情况下,执行此操作的有效方法是什么?通过最小的更改,我的意思是我可以添加额外的变量来跟踪分支,但不能完全重写函数。
谢谢