- Minimum Sum Path
Given a BST, find the path with the minimum sum from root to leaves.
Example
Input:{5,2,6,#,3,#,8}
Output:10
经典递归解法。注意分左右都没有,左有右没有,左没有右有,左右都有4种情况。
/**
* Definition of TreeNode:
* class TreeNode {
* public:
* int val;
* TreeNode *left, *right;
* TreeNode(int val) {
* this->val = val;
* this->left = this->right = NULL;
* }
* }
*/
class Solution {
public:
/**
* @param root: the root
* @return: minimum sum
*/
int minimumSum(TreeNode * root) {
if (!root) return 0;
if (!root->left && !root->right) return root->val;
if (!root->left && root->right) return root->val + minimumSum(root->right); //imporant!!!
if (root->left && !root->right) return root->val + minimumSum(root->left); //imporant!!!
return root->val + min(minimumSum(root->left), minimumSum(root->right));
}
};
本文介绍了一种经典的递归解法,用于寻找二叉搜索树(BST)中从根节点到叶子节点的路径,该路径上的节点值之和最小。通过递归地检查左子树和右子树,算法能有效地找到满足条件的最小路径。
226

被折叠的 条评论
为什么被折叠?



