📅  最后修改于: 2023-12-03 15:26:09.038000             🧑  作者: Mango
本文将介绍一个常见的问题:如何判断一个二叉树是否是对称的,即它的左子树和右子树是否对称。
递归地判断两棵树是否对称:
具体实现代码:
def is_symmetric(root):
if root is None:
return True
def helper(node1, node2):
if node1 is None and node2 is None:
return True
if node1 is None or node2 is None:
return False
if node1.val != node2.val:
return False
return helper(node1.left, node2.right) and helper(node1.right, node2.left)
return helper(root.left, root.right)
使用队列进行迭代:
具体实现代码:
def is_symmetric(root):
if root is None:
return True
queue = deque([root.left, root.right])
while queue:
node1 = queue.popleft()
node2 = queue.popleft()
if node1 is None and node2 is None:
continue
if node1 is None or node2 is None:
return False
if node1.val != node2.val:
return False
queue.append(node1.left)
queue.append(node2.right)
queue.append(node1.right)
queue.append(node2.left)
return True
本文介绍了如何判断一个二叉树是否对称,提供了递归和迭代两种解决方法。其中,递归方法需要编写一个递归的帮助函数,而迭代方法则需要使用队列进行迭代。