lintcode596- Minimum Subtree- easy

Posted jasminemzy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了lintcode596- Minimum Subtree- easy相关的知识,希望对你有一定的参考价值。

Given a binary tree, find the subtree with minimum sum. Return the root of the subtree.

Notice

LintCode will print the subtree which root is your return node.
It‘s guaranteed that there is only one subtree with minimum sum and the given binary tree is not an empty tree.

Example

Given a binary tree:

     1
   /    -5     2
 / \   /  0   2 -4  -5 

return the node 1.

 


 

分治+全局变量监控的遍历。

用分治每次的确计算出当前的sum并作为上层需要的数据返回。但每次helper里同时暗搓搓比一下自己是不是比全局变量优秀了,取而代之。

/**
 * Definition of TreeNode:
 * public class TreeNode {
 *     public int val;
 *     public TreeNode left, right;
 *     public TreeNode(int val) {
 *         this.val = val;
 *         this.left = this.right = null;
 *     }
 * }
 */


public class Solution {
    /*
     * @param root: the root of binary tree
     * @return: the root of the minimum subtree
     */
     
    private int minSum = Integer.MAX_VALUE;
    private TreeNode minRoot = null;
    
    public TreeNode findSubtree(TreeNode root) {
        // write your code here
        
        if (root == null) {
            return minRoot;
        }
        
        subtreeSum(root);
        return minRoot;
        
    }
    
    private int subtreeSum(TreeNode root) {
        
        if (root == null) {
            return 0;
        }
        
        int leftSum = subtreeSum(root.left);
        int rightSum = subtreeSum(root.right);
        
        int result = leftSum + rightSum + root.val;
        
        if(result < minSum) {
            minSum = result;
            minRoot = root;
        }
        
        return result;
    }
}

 

以上是关于lintcode596- Minimum Subtree- easy的主要内容,如果未能解决你的问题,请参考以下文章

lintcode-medium-Minimum Adjustment Cost

lintcode-medium-Minimum Window Substring

lintcode-easy-Minimum Path Sum

LintCode : Find Minimum in Rotated Sorted Array

lintcode-medium-Minimum Size Subarray Sum

[LintCode] Minimum Path Sum