给你一个二叉树的根节点 root , 检查它是否轴对称。
示例 1:
输入:root = [1,2,2,3,4,4,3]
输出:true
示例 2:
输入:root = [1,2,2,null,3,null,3]
输出:false
# 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:
# 第一种方法迭代
if not root or not (root.left or root.right):
return True
# 队列保存节点
queue = [root.left, root.right]
while queue:
left = queue.pop(0)
right = queue.pop(0)
# 判断两个节点
if not (left or right):
continue
if not (left and right):
return False
if left.val != right.val:
return False
# 将左节点左孩子,右节点的右孩子入队列
queue.append(left.left)
queue.append(right.right)
queue.append(left.right)
queue.append(right.left)
return True
# 方法二 递归
# if not root:
# return True
# def dfs(left, right):
# # 递归终止条件都为空
# # 两个节点其中一个为空
# # 两个节点的值不想等
# if not (left or right):
# return True
# if not (left and right):
# return False
# if left.val != right.val:
# return False
# return dfs(left.left, right.right) and dfs(left.right, right.left)
# return dfs(root.left, root.right)
38. Leetcode 101. 对称二叉树 (二叉树-二叉树性质)
最新推荐文章于 2023-04-07 20:27:42 发布