在Python中编写程序以检查两个叶子的节点序列是否相同

在Python中编写程序以检查两个叶子的节点序列是否相同

假设我们有两个二叉树;我们需要检查两个树中从左到右叶子节点的序列是否相同。

因此,如果输入如下:

在Python中编写程序以检查两个叶子的节点序列是否相同

那么输出将为True,因为对于两棵树,序列为[2, 6]。

为了解决这个问题,我们将遵循以下步骤:

  • c :一个新的列表
  • 定义函数inorder()。该函数将接收root和c作为参数。
  • 如果c为空,则
    • c :一个新的列表
  • 如果root不为空,则
    • inorder(root的左侧,c)
    • 如果root的左侧为空,而root的右侧也为空,则
      • 将root的值插入到c的末尾
    • inorder(root的右侧,c)
  • 返回c
  • 在主方法中,执行以下操作:
  • 如果inorder(root0)与inorder(root1)相同,则
    • 返回True
  • 否则,
    • 返回False

下面是一个示例实现,以便更好地理解:

更多Python相关文章,请阅读:Python 教程

示范

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))

输入

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)

输出

True

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程