- 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));
}
};