

- Trending Categories
Data Structure
Networking
RDBMS
Operating System
Java
iOS
HTML
CSS
Android
Python
C Programming
C++
C#
MongoDB
MySQL
Javascript
PHP
- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who
Check if all levels of two trees are anagrams or not in Python
Suppose, we are provided with two binary trees. We have to check if each level of a binary tree is an anagram of the other binary tree's same level. We return True if it is an anagram, otherwise we return False.
So, if the input is like
, then the output will be True.
To solve this, we will follow these steps −
- tree_1 is the root node of the first tree and tree_2 is the root node of the second tree.
- if tree_1 is same as null and tree_2 is same as null, then
- return True
- if tree_1 is same as null or tree_2 is same as null, then
- return False
- queue1 := a new queue
- queue2 := a new queue
- insert tree_1 at the end of queue1
- insert tree_2 at the end of queue2
- while 1 is non-zero, do
- size1 := size of queue1
- size2 := size of queue2
- if size1 is not same as size2, then
- return False
- if size1 is same as 0, then
- come out from the loop
- curr_level1 := a new list
- curr_level2 := a new list
- while size1 > 0, do
- node1 := first element of queue1
- delete first element from queue1
- if left of node1 is not same as null, then
- insert left of node1 at the end of queue1
- if right of node1 is not same as null, then
- insert right of node1 at the end of queue1
- size1 := size1 - 1
- node2 := first element of queue2
- delete first element from queue2
- if left of node2 is not same as null, then
- insert left of node2 at the end of queue2
- if right of node2 is not same as null, then
- insert right of node2 at the end of queue2
- insert value of node1 at the end of curr_level1
- insert value of node2 at the end of curr_level2
- sort the list curr_level1
- sort the list curr_level2
- if curr_level1 is not same as curr_level2, then
- return False
- return True
Example
Let us see the following implementation to get better understanding −
def make_tree(elements): tree = tree_node(elements[0]) for element in elements[1:]: insert_value(tree, element) return tree def insert_value(temp,value): que = [] que.append(temp) while (len(que)): temp = que[0] que.pop(0) if (not temp.left): if value is not None: temp.left = tree_node(value) else: temp.left = tree_node(0) break else: que.append(temp.left) if (not temp.right): if value is not None: temp.right = tree_node(value) else: temp.right = tree_node(0) break else: que.append(temp.right) class tree_node: def __init__(self, value): self.value = value self.left = None self.right = None def solve(tree_1, tree_2) : if (tree_1 == None and tree_2 == None) : return True if (tree_1 == None or tree_2 == None) : return False queue1 = [] queue2 = [] queue1.append(tree_1) queue2.append(tree_2) while (1) : size1 = len(queue1) size2 = len(queue2) if (size1 != size2): return False if (size1 == 0): break curr_level1 = [] curr_level2 = [] while (size1 > 0): node1 = queue1[0] queue1.pop(0) if (node1.left != None) : queue1.append(node1.left) if (node1.right != None) : queue1.append(node1.right) size1 -= 1 node2 = queue2[0] queue2.pop(0) if (node2.left != None) : queue2.append(node2.left) if (node2.right != None) : queue2.append(node2.right) curr_level1.append(node1.value) curr_level2.append(node2.value) curr_level1.sort() curr_level2.sort() if (curr_level1 != curr_level2) : return False return True tree_1 = make_tree([5, 6, 7, 9, 8]) tree_2 = make_tree([5, 7, 6, 8, 9]) print(solve(tree_1, tree_2))
Input
[5, 6, 7, 9, 8], [5, 7, 6, 8, 9]
Output
True
- Related Questions & Answers
- Write a program in JavaScript to check if two strings are anagrams of each other or not
- Check if all elements of the array are palindrome or not in Python
- Check if two strings are equal or not in Arduino
- Check if two StringDictionary objects are equal or not in C#
- Check if concatenation of two strings is balanced or not in Python
- How to check if two Strings are anagrams of each other using C#?
- Python Pandas – Check if any specific column of two DataFrames are equal or not
- C Program to check if two strings are same or not
- Check if strings are rotations of each other or not in Python
- How to check if two numbers (m,n) are amicable or not using Python?
- Check if all the 1s in a binary string are equidistant or not in Python
- Check if leaf traversal of two Binary Trees is same in Python
- Program to check whether two trees can be formed by swapping nodes or not in Python
- Python Pandas - Check if the dataframe objects are equal or not
- Program to check given graph is a set of trees or not in Python
Advertisements