chore(Java): add left leaf sum binary tree (#839)

pull/841/head^2
Hemant Sharma 2022-09-15 02:14:31 +05:30 committed by GitHub
parent daa8be12a4
commit eb3d410c09
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 96 additions and 0 deletions

View File

@ -101,6 +101,7 @@
- [Min Heap](trees/MinHeap.java)
- [Check Tree Traversal](trees/check-tree-traversal.java)
- [Random Node of a binary tree](tree-random-node.java)
- [Left Leaf Sum of a Binary tree](trees/Left-Leaf-Sum.java)
## Backtracking

View File

@ -0,0 +1,95 @@
package Trees.Left_Leaf_Sum;
/* Problem Statement: Given the root of a binary tree, return the sum of all left leaves. */
//class to create Tree
class TreeNode{
int data;
TreeNode left,right;
TreeNode(int data){
this.data = data;
this.left = this.right = null;
}
}
class Tree{
TreeNode root;
public Tree() {
root=null;
}
}
public class LeftLeafSum {
//method to check if a node is leaf or not
static boolean isLeaf(TreeNode root)
{
if (root == null) return false;
if (root.left == null && root.right == null)
return true;
return false;
}
//returns the sum of left leaves
public static int leftsum(TreeNode root){
int leftLeavesSum=0;
//to avoid null pointer exception
if(root!=null)
{
//if a node's left is a leaf then add its value
if( isLeaf(root.left) )
leftLeavesSum+=root.left.data;
//else go to left
else
leftLeavesSum+=leftsum(root.left);
//and finally go to right
leftLeavesSum+=leftsum(root.right);
}
return leftLeavesSum;
}
public static void main(String[] args) {
Tree tree = new Tree();
tree.root = new TreeNode(1);
tree.root.left = new TreeNode(2);
tree.root.right = new TreeNode(3);
tree.root.left.left = new TreeNode(7);
tree.root.left.right = new TreeNode(8);
tree.root.right.left = new TreeNode(81);
tree.root.right.right= new TreeNode(75);
int sumOfLeftLeaves = leftsum(tree.root);
System.out.println("sum of left leaves is "+sumOfLeftLeaves);
}
}
/*
Eg. Input:-
1
/ \
2 3
/ \ / \
7 8 81 75
Output:- 88
Explanation:-there are two left leaves(nodes which have no child) 7 and 81 respectively in the tree and their sum is 88
Time Complexity:- O(N), where n is number of nodes in Binary Tree.
Code Description:- A method isLeaf() which returns a boolean, is created to check if a node is leaf or not, is yes then add its
left.data, if not then recursively go to its left and then its right.
*/