Given a binary tree and an integer k. The task is to count the number of paths in the tree with the sum of the nodes equals to k.
A path can start from any node and end at any node and must be downward only, i.e. they need not be root node and leaf node, and negative numbers can also be there in the tree.
Input : k = 5 Root of below binary tree: 1 / \ 3 -1 / \ / \ 2 1 4 5 / / \ \ 1 1 2 6 Output : No of paths with sum equals to 5 are: 8 3 2 3 1 1 1 3 1 4 1 1 -1 4 1 -1 4 2 5 1 -1 5 Input : k = 3 1 / \ 2 -1 / \ / 1 2 3 / \ 2 5 Output : No of paths with sum equals to 3 are : 4
The implementation of printing paths with path sum equal to k is already discussed in this post using vector. However, storing in vector and recursively moving increases both space and time complexity if we just want to store the count of such paths
- We will be using a unordered map which will be filled with various path sum.
- For every node we will check if current sum and root’s value equal to k or not. If the sum equals to k then increment the required answer by one.
- Then we will add all those path sum in map which differs from current sum+root->data value by a constant integer k.
- Then we will be inserting the current sum + root->data value in the map.
- We will recursively check for left and right subtrees of current root
- After the right subtree is also traversed we will remove the current sum + root->data value from the map so that it is not taken into consideration in further traversals of other nodes other than the current root’s
Below is the implementation of the above approach:
No of paths with sum equals to 3 are : 4
Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.
- Count even paths in Binary Tree
- Count the number of paths from root to leaf of a Binary tree with given XOR value
- Count of exponential paths in a Binary Tree
- Count of root to leaf paths whose permutation is palindrome in a Binary Tree
- Count of paths in given Binary Tree with odd bitwise AND for Q queries
- Print all paths of the Binary Tree with maximum element in each path greater than or equal to K
- Print all the Paths of a Binary Tree whose XOR is non-zero
- Print Palindromic Paths of Binary tree
- Maximum sub-tree sum in a Binary Tree such that the sub-tree is also a BST
- Check whether a given binary tree is skewed binary tree or not?
- Check if a binary tree is subtree of another binary tree using preorder traversal : Iterative
- Count the Number of Binary Search Trees present in a Binary Tree
- Print Binary Tree levels in sorted order | Set 3 (Tree given as array)
- Check if the given binary tree has a sub-tree with equal no of 1's and 0's | Set 2
- Create a mirror tree from the given binary tree
- Check if the given n-ary tree is a binary tree
- Convert a given Binary tree to a tree that holds Logical OR property
- Difference between General tree and Binary tree
- Difference between Binary tree and B-tree
- Construct XOR tree by Given leaf nodes of Perfect Binary Tree
If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to email@example.com. See your article appearing on the GeeksforGeeks main page and help other Geeks.
Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.