Python
 Computer >> コンピューター >  >> プログラミング >> Python

2つのツリーをチェックするプログラムは、Pythonでの構造と値に基づいてまったく同じです。


2分木があるとすると、構造と値がまったく同じかどうかを確認する必要があります。双子の木と言えます。

したがって、入力が次のような場合

2つのツリーをチェックするプログラムは、Pythonでの構造と値に基づいてまったく同じです。

その場合、出力は最初のペアでTrue、2番目のペアと3番目のペアでFalseになります。これは、2番目と3番目の項目が異なり、構造がそれぞれ異なるためです。

これを解決するには、次の手順に従います-

  • メソッドsolve()を定義します。これには2つのルートが必要です

  • root0がnullで、root1がnullの場合、

    • Trueを返す

  • root0がnullまたはroot1がnullの場合、

    • Falseを返す

  • root0の値がroot1の値と同じでない場合、

    • Falseを返す

  • Solve(root0の左側、root1の左側)とsolve(root0の右側、root1の右側)がtrueの場合はtrueを返し、それ以外の場合はfalseを返します。

理解を深めるために、次の実装を見てみましょう-

class TreeNode:
   def __init__(self, val, left=None, right=None):
      self.val = val
      self.left = left
      self.right = right
class Solution:
   def solve(self, root0, root1):
      if not root0 and not root1:
         return True
      if not root0 or not root1:
         return False
      if root0.val != root1.val:
         return False
      return self.solve(root0.left, root1.left) and
self.solve(root0.right, root1.right)
ob = Solution()
root1 = TreeNode(10)
root1.left = TreeNode(5)
root1.right = TreeNode(15)
root1.left.left = TreeNode(3)
root1.left.right = TreeNode(8)
root2 = TreeNode(10)
root2.left = TreeNode(5)
root2.right = TreeNode(15)
root2.left.left = TreeNode(3)
root2.left.right = TreeNode(8)
print(ob.solve(root1, root2))

入力

root1 = TreeNode(10) root1.left = TreeNode(5) root1.right =
TreeNode(15) root1.left.left = TreeNode(3) root1.left.right =
TreeNode(8) root2 = TreeNode(10) root2.left = TreeNode(5)
root2.right = TreeNode(15) root2.left.left = TreeNode(3)
root2.left.right = TreeNode(8)

出力

True

  1. Pythonで葉のシーケンスが2つの葉と同じであるかどうかを確認するプログラム

    2つの二分木があるとします。両方の木の左から右への葉の順序が同じであるかどうかを確認する必要があります。 したがって、入力が次のような場合 両方のツリーのシーケンスが[2、6]であるため、出力はTrueになります。 これを解決するには、次の手順に従います。 c:=新しいリスト 関数inorder()を定義します。これが定着し、c cがnullの場合、 c:=新しいリスト rootがnullでない場合、 順序(ルートの左側、c) ルートの左側がnullで、ルートの右側がnullの場合、 cの最後にrootの値を挿入 順序(ルートの権利、c) return c

  2. ツリー内のすべての値がPythonで同じかどうかをチェックするプログラム

    二分木があるとすると、ツリー内のすべてのノードが同じ値であるかどうかを確認する必要があります。 したがって、入力が次のような場合 その場合、出力はTrueになります これを解決するには、次の手順に従います- 関数solve()を定義します。これはルートになり、val ルートがnullの場合、 Trueを返す valが定義されていない場合、 val:=ルートの値 ルートの値がvalと同じで、solve(ルートの左側、val)およびsolve(ルートの右側、val)もtrueの場合、trueを返します 理解を深めるために、次の実装を見