1. 程式人生 > >lintcode596- Minimum Subtree- easy

lintcode596- Minimum Subtree- easy

code with turn ant 分治 全局變量 there oot str

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