Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.ArrayList;
- public class parantez {
- private static class Node{
- int data;
- Node left, right;
- }
- private static class SumHolder{
- int sum;
- Node node;
- public SumHolder(Node n, int s){
- this.node = n;
- this.sum = s;
- }
- public SumHolder add(int i){
- this.sum+=i;
- return this;
- }
- }
- private static class TwoMaxSumHolder{
- SumHolder sh1, sh2;
- public TwoMaxSumHolder(Node n1, int s1, Node n2, int s2){
- sh1 = new SumHolder(n1, s1);
- sh2 = new SumHolder(n2, s2);
- }
- public TwoMaxSumHolder(SumHolder sh1, SumHolder sh2){
- this.sh1 = sh1;
- this.sh2 = sh2;
- }
- }
- public TwoMaxSumHolder getMaxSumTwoLeaf(Node node) {
- if (node == null)
- {
- return new TwoMaxSumHolder(null, 0, null, 0);
- }
- else if (node.left == null && node.right == null)
- {
- return new TwoMaxSumHolder(node, 0, node, node.data);
- }
- else
- {
- boolean isFromRight = false; isFromRight = false;
- TwoMaxSumHolder leftMaxSums = getMaxSumTwoLeaf(node.left);
- TwoMaxSumHolder rightMaxSums = getMaxSumTwoLeaf(node.right);
- TwoMaxSumHolder currentMaxTwo = getMaxTwo(leftMaxSums, rightMaxSums);
- currentMaxTwo.sh1.add(node.data);
- currentMaxTwo.sh2.add(node.data);
- return currentMaxTwo;
- }
- }
- private TwoMaxSumHolder getMaxTwo(TwoMaxSumHolder one, TwoMaxSumHolder two ){
- SumHolder first, second; // sum of first is always larger than sum of second
- SumHolder current;
- current = one.sh1;
- first = current;
- current = one.sh2;
- if (current.sum > first.sum){
- second = first;
- first = current;
- }
- else
- second = current;
- current= two.sh1;
- if (current.sum > first.sum){
- second = first;
- first = current;
- }
- else if (current.sum > second.sum){
- second = current;
- }
- current= two.sh2;
- if (current.sum > first.sum){
- second = first;
- first = current;
- }
- else if (current.sum > second.sum){
- second = current;
- }
- return new TwoMaxSumHolder(first, second);
- }
- public static void main(String[] args) {
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement