Leikou問題ブラッシングノート:101、対称二分木(キュー、わかりやすいコード、完全なソリューションコードとコメント)

トピック:

101.対称二分木

二分木が与えられたら、それが鏡面対称であるかどうかを確認します。

たとえば、二分木[1,2,2,3,4,4,3]は対称です。

ここに画像の説明を挿入

ただし、次の[1,2,2、null、3、null、3]は鏡面対称ではありません。

ここに画像の説明を挿入

問題解決のアイデア:

BFSはキューを使用し、多くの問題解決のBFSは4回ノードに配置されます。より直感的な方法は、2組のグループをキューに配置することです。

キュー内の左右の2つのノードを同時に取り出し、これら2つのノードの値が等しいかどうかを判断し、(left.left、right.right)、(left.right、 right.left)グループがキューに入れられます。

BFSアプローチでは、事前に別のノード値に遭遇して終了し、Falseを返す場合を除いて、すべてのノードをチェックして、返される結果がTrueであると判断する必要があります。

問題解決Python:

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution:
    def isSymmetric(self, root: TreeNode) -> bool:
        queue = collections.deque()
        queue.append((root, root))
        while queue:
            left, right = queue.popleft()
            if not left and not right:
                continue
            if not left or not right:
                return False
            if left.val != right.val:
                return False
            queue.append((left.left, right.right))
            queue.append((left.right, right.left))
            # print(queue)
        return True

ここに画像の説明を挿入

著者:fuxuemingzhu
リンク:https://leetcode-cn.com/problems/symmetric-tree/solution/bfs-dui-lie-tong-shi-bao-cun-bao-cun-yao-pan-duan-/
出典: LeetCode https://leetcode-cn.com/problems/symmetric-tree/

おすすめ

転載: blog.csdn.net/weixin_44414948/article/details/113748957