package com.interview.algorithms.tree; import com.interview.basics.model.tree.BinaryTree; import com.interview.basics.model.tree.BinaryTreeNode; /** * Created with IntelliJ IDEA. * User: stefanie * Date: 9/18/14 * Time: 4:41 PM */ public class C5_23_MaxSubTree { int max; BinaryTreeNode<Integer> maxNode; public BinaryTreeNode<Integer> find(BinaryTree<Integer> tree){ max = Integer.MIN_VALUE; sum(tree.getRoot()); return maxNode; } public int sum(BinaryTreeNode<Integer> node){ if(node == null) return 0; int count = node.value; count += sum(node.left); count += sum(node.right); if(count > max) { max = count; maxNode = node; } return count; } }