Pythonでツリーの順序が回文であるかどうかを確認するプログラム
各ノードに0〜9の数字が含まれる二分木があるとすると、その順序の走査が回文であるかどうかを確認する必要があります。
したがって、入力が次のような場合
その場合、その順序トラバーサルは[2,6,10,6,2]であるため、出力はTrueになります。
これを解決するには、次の手順に従います-
- rootがnullの場合、
- Trueを返す
- スタック:=新しいスタック
- curr:=root
- 順序:=新しいリスト
- スタックが空でないか、currがnullでない場合は、
- currがnullでない場合は、
- currをスタックにプッシュします
- curr:=currの左側
- node:=スタックからポップされた要素
- 順序の最後にノードの値を挿入
- curr:=ノードの右側
- currがnullでない場合は、
- 順序が逆の順序と同じ場合はtrueを返し、それ以外の場合はfalseを返します。
理解を深めるために、次の実装を見てみましょう-
例
class TreeNode: def __init__(self, data, left = None, right = None): self.val = data self.left = left self.right = right class Solution: def solve(self, root): if not root: return True stack = [] curr = root inorder = [] while stack or curr: while curr: stack.append(curr) curr = curr.left node = stack.pop() inorder.append(node.val) curr = node.right return inorder == inorder[::-1] ob = Solution() root = TreeNode(6) root.left = TreeNode(2) root.right = TreeNode(6) root.right.left = TreeNode(10) root.right.right = TreeNode(2) print(ob.solve(root))
入力
root = TreeNode(6) root.left = TreeNode(2) root.right = TreeNode(6) root.right.left = TreeNode(10) root.right.right = TreeNode(2)
出力
True
-
与えられたグラフが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()を定義します。これはソースを取ります
-
Pythonで1つの値がBSTに存在するかどうかを確認するプログラム
二分探索木とvalという別の入力があるとすると、valがツリーに存在するかどうかを確認する必要があります。 したがって、入力が次のような場合 val =7の場合、ツリーに7が存在するため、出力はTrueになります。 これを解決するために、次の手順に従います- 関数solve()を定義します。これはルートになります、val ルートがnullの場合、 Falseを返す ルートのデータがvalと同じ場合、 Trueを返す ルートのデータが