Java Binary Tree Vertical Sum

Chapter: Data Structures Last Updated: 11-11-2016 14:53:52 UTC

Program:

            /* ............... START ............... */
                
import java.util.Map.Entry;
import java.util.TreeMap;

public class JavaBinaryTreeVerticalSum {

	public static class TreeNode {
		int data;
		TreeNode left;
		TreeNode right;

		TreeNode(int data) {
			this.data = data;
		}
	}

	public static void printVertivalSumOfBinaryTree(TreeNode startNode, TreeMap<Integer, Integer> treeNodeMap,
			int level) {
		if (startNode == null) {
			return;
		}

		printVertivalSumOfBinaryTree(startNode.left, treeNodeMap, level - 1);

		if (treeNodeMap.get(level) != null) {
			Integer sum = treeNodeMap.get(level) + startNode.data;
			treeNodeMap.put(level, sum);
		} else {

			treeNodeMap.put(level, startNode.data);
		}

		printVertivalSumOfBinaryTree(startNode.right, treeNodeMap, level + 1);

	}

	public static void main(String[] args) {
		JavaBinaryTreeVerticalSum bi = new JavaBinaryTreeVerticalSum();

		TreeNode rootNode = createBinaryTree();
		System.out.println("Vertical sum of binary tree will be:");
		TreeMap<Integer, Integer> treeNodeMap = new TreeMap<Integer, Integer>();
		printVertivalSumOfBinaryTree(rootNode, treeNodeMap, 0);

		for (Entry<Integer, Integer> entry : treeNodeMap.entrySet())
			System.out.println(entry.getValue());
	}

	public static TreeNode createBinaryTree() {

		TreeNode rootNode = new TreeNode(40);
		TreeNode node20 = new TreeNode(20);
		TreeNode node10 = new TreeNode(10);
		TreeNode node30 = new TreeNode(30);
		TreeNode node60 = new TreeNode(60);
		TreeNode node50 = new TreeNode(50);
		TreeNode node70 = new TreeNode(70);
		TreeNode node55 = new TreeNode(55);
		TreeNode node5 = new TreeNode(5);

		rootNode.left = node20;
		rootNode.right = node60;

		node20.left = node10;
		node20.right = node30;

		node60.left = node50;
		node60.right = node70;
		node50.right = node55;
		node30.left = node5;
		return rootNode;
	}
}
                /* ............... END ............... */
        

Output

Vertical sum of binary tree will be:
10
25
120
115
70

Tags

Binary Tree Vertical Sum, Java, Data Structures

Similar Programs Chapter Last Updated
HashMap Implementation In Java Data Structures 07-07-2018
Linked List Implementation In Java Data Structures 09-03-2018
Queue Implementation In Java Data Structures 22-09-2018
Stack Implementation In Java Data Structures 22-09-2018
Binary Search Tree Java Data Structures 11-02-2018
Insertion Sort In Java Data Structures 10-02-2018
Java Stack Example Data Structures 16-10-2017
Java String Array Sort Data Structures 31-03-2017
Java Hashmap Add Key And Value Data Structures 25-03-2017
Java Binary Tree Boundary Traversal Data Structures 11-11-2016
Java Binary Tree Lowest Common Ancestor (LCA) Data Structures 11-11-2016
Java Binary Tree Maximum Element Data Structures 11-11-2016
Java Three Dimensional Array Data Structures 28-10-2016
Java Infix Expression To Postfix Expression Data Structures 25-10-2016
Java Linked List Add Element First And Last Data Structures 24-10-2016
Java Maximum Element From Vector Data Structures 24-10-2016
Java Binary Search On Vector Data Structures 24-10-2016
Java Get Elements Of LinkedList Data Structures 23-10-2016
Java Linked List Update Element Data Structures 23-10-2016
Java Delete Elements From LinkedList Data Structures 23-10-2016
Java Double Ended Queue Data Structures 09-10-2016
Java Dynamic Queue Using Array Data Structures 26-09-2018
Java Queue Array Based Implementation Data Structures 07-10-2016
Java Sort Short Array Data Structures 25-09-2016
Java Sort Long Array Data Structures 25-09-2016
Java Sort Int Array Data Structures 19-09-2016
Java Sort Float Array Data Structures 19-09-2016
Java Sort Double Array Data Structures 19-09-2016
Java Sort Char Array Data Structures 19-09-2016
Java Sort Byte Array Data Structures 19-09-2016

1 2 3