给一棵二叉树, 找到和为最小的子树, 返回其根节点。
输入输出数据范围都在int内。
分治法
在求左子树和右子树的和的同时 确定左右子树中最小子树的和 再和整体进行比较
利用全局变量保存最小子树的和
public class Solution {
public TreeNode node = null;
public int min = Integer.MAX_VALUE;
public TreeNode findSubtree(TreeNode root) {
minSubtree(root);
return node;
}
public int minSubtree(TreeNode root){
if(root == null)
return 0;
int sum = minSubtree(root.left) + minSubtree(root.right) + root.val;
if(sum < min){
node = root;
min = sum;
}
return sum;
}
}