【发布时间】:2016-03-17 23:09:10
【问题描述】:
如何找到二叉树中的最小路径和,并打印路径?路径可以是从 ROOT 节点到任何 LEAF 节点。我已经编写了 C++ 代码来查找最小总和,但是在打印路径时遇到了问题。
int MinTreePathSum(TreeNode *head, vector<TreeNode> &path)
{
if(!head) // head is NULL
return 0;
else if(!(head->left) && head->right) // only head->left is NULL
return head->val+MinTreePathSum(head->right, path);
else if(!(head->right) && head->left) // only head->right is NULL
return head->val+MinTreePathSum(head->left, path);
else
return head->val+min(MinTreePathSum(head->left, path), MinTreePathSum(head->right, path)); // none of left and right are NULL
}
没有使用参数列表中的path,谁能帮我打印出路径总和最小的路径?
【问题讨论】:
-
1) 是否要更新路径? 2)您是否故意使用
vector<TreeNode>而不是vector<TreeNode*>? -
1)
path向量的初始大小=0,用于存储合格的TreeNode。 2)我认为我们可以做任何一种方式,只要路径是唯一确定的。 -
@Christophe 我刚刚意识到使用
vector<TreeNode *>比vector<TreeNode>好得多。忘记我之前的回答 2)
标签: c++ algorithm recursion binary-tree