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

Pythonで二分木が完成しているかどうかをチェックするプログラム


二分木があるとしましょう。これが完全な二分木であるかどうかを確認する必要があります。完全な二分木でわかっているように、レベルはノードで埋められますが、最後のレベルのノードと最後のレベルのすべてのノードが可能な限り左にある可能性があります。

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

Pythonで二分木が完成しているかどうかをチェックするプログラム

その場合、出力はTrueになります

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

  • q:=両端キュー

  • qの最後にルートを挿入

  • フラグ:=False

  • qが空でない間、実行します

    • temp:=qの左側から削除した後の要素

    • tempがnullの場合、

      • フラグ:=True

    • それ以外の場合、フラグが設定されていてtempがnullでない場合は、

      • Falseを返す

    • それ以外の場合

      • qの最後にtempの左側を挿入します

      • qの最後に温度の右を挿入

  • Trueを返す

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

from collections import deque
class TreeNode:
   def __init__(self, data, left = None, right = None):
      self.data = data
      self.left = left
      self.right = right
class Solution:
   def solve(self, root):
      q = deque()
      q.append(root)
      flag = False
   while q:
      temp = q.popleft()
   if not temp:
      flag = True
      elif flag and temp:
   return False
   else:
      q.append(temp.left)
      q.append(temp.right)
   return True
ob = Solution()
root = TreeNode(9)
root.left = TreeNode(7)
root.right = TreeNode(10)
root.left.left = TreeNode(6)
root.left.right = TreeNode(8)
print(ob.solve(root))

入力

root = TreeNode(9) root.left = TreeNode(7) root.right = TreeNode(10) root.left.left = TreeNode(6) root.left.right = TreeNode(8)

出力

True

  1. 与えられたグラフがPythonで2部グラフであるかどうかをチェックするプログラム

    無向グラフが1つあるとすると、グラフが2部グラフであるかどうかを確認する必要があります。グラフのすべてのエッジ{u、v}がAに1つのノードuを持ち、Bに別のノードvを持つように、グラフのノードを2つのセットAとBに分割できる場合、グラフは2部グラフであることがわかります。 したがって、入力が次のような場合 次に、出力はTrueになり、[0,4]はセットAにあり、[1,2,3]はセットBにあり、すべてのエッジはAからAまたはBからBではなく、AからBまたはBからAになります。 。 これを解決するために、次の手順に従います- 関数dfs()を定義します。これはソースを取ります

  2. 特定のバイナリツリーがPythonのヒープであるかどうかを確認します

    二分木があるとしましょう。ヒープかどうかを確認する必要があります。ヒープには次のプロパティがあります。ヒープはバイナリツリーになります。そのツリーは完全なツリーである必要があります(つまり、最後を除くすべてのレベルがいっぱいである必要があります)。そのツリーのすべてのノード値は、その子ノード(max-heap)以上である必要があります。 したがって、入力が次のような場合 その場合、出力はtrueになります これを解決するには、次の手順に従います- 関数number_of_nodes()を定義します。これが定着します rootがnullの場合、 0を返す それ以外の場合、