Syntax error Program to check whether leaves sequences are same of two leaves or not in python

Program to check whether leaves sequences are same of two leaves or not in python



Suppose we have two binary trees; we have to check whether the sequence of leaves left-to-right in both trees are the same.

So, if the input is like

then the output will be True as the sequence is [2, 6] for both trees.

To solve this, we will follow these steps:

  • c := a new list
  • Define a function inorder() . This will take root, and c
  • if c is null, then
    • c := a new list
  • if root is not null, then
    • inorder(left of root, c)
    • if left of root is null and right of root is null, then
      • insert value of root at the end of c
    • inorder(right of root, c)
  • return c
  • From the main method, do the following:
  • if inorder(root0) is same as inorder(root1), then
    • return True
  • otherwise,
    • return False

Let us see the following implementation to get better understanding:

Example

Live Demo

class TreeNode:
   def __init__(self, data, left = None, right = None):
      self.val = data
      self.left = left
      self.right = right

class Solution:
   c = []

   def inorder(self, root, c=None):
      if c is None:
         c = []
      if root:
         self.inorder(root.left, c)
         if not root.left and not root.right:
            c.append(root.val)
            self.inorder(root.right, c)
      return c

   def solve(self, root0, root1):
      if self.inorder(root0) == self.inorder(root1):
         return True
      else:
         return False

ob = Solution()
root1 = TreeNode(1)
root1.right = TreeNode(3)
root1.right.left = TreeNode(2)
root1.right.right = TreeNode(6)

root2 = TreeNode(1)
root2.left = TreeNode(3)
root2.right = TreeNode(6)
root2.left.left = TreeNode(2)
print(ob.solve(root1, root2))

Input

root1 = TreeNode(1)
root1.right = TreeNode(3)

root1.right.left = TreeNode(2)

root1.right.right = TreeNode(6) 

root2 = TreeNode(1)

root2.left = TreeNode(3)

root2.right = TreeNode(6)

root2.left.left = TreeNode(2)

Output

True
Updated on: 2020-11-26T07:21:57+05:30

116 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements