Day #8: Number Of Unival Trees Using Python

Day #8: Number Of Unival Trees Using Python

Hello everyone. Today is the Day 8 of the #100DaysOfCodeChallenge. Received a problem previously asked by Google with an easy tag to it.

The Question On Day #8:

A unival tree (which stands for "universal value") is a tree where all nodes under it have the same value.

Given the root to a binary tree, count the number of unival subtrees.

For example, the following tree has 5 unival subtrees:

   0
  / \
 1   0
    / \
   1   0
  / \
 1   1

Approach

  • Before moving on to the main logic, let's discuss about the Brute Force way to solve this:
    • Starting from the root, we check if the immediate children have the same value as the root node, and then the children of the immediate nodes and so on.
    • We repeat this process for every subtree ending up in time taking process.

Optimal Way

  • The optimal way to solve this problem is by using the bottom-up approach. We first start from the leaf nodes, and move to the upper levels and use the unary value of the child subtree to decide if the main tree is a unary tree or not.

Python Code

Output

No. of unival subtrees= 5

Visualiser

To understand the recursion behind this code, please click here

Feel free to reach out for any query clearance.

Thanks and cheers:)