是一个常见的算法问题,可以通过比较树的左右子树是否镜像对称来判断。以下是一个完善且全面的答案:
树的镜像是指将树中所有节点的左右子树交换位置得到的新树。检查树是否为镜像的问题可以通过递归或迭代的方式解决。
这个问题可以使用递归的方式解决,递归函数的参数为两个树的根节点。具体的实现代码如下(使用 Python 语言为例):
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
def isMirror(root1, root2):
# 如果两个树都为空,则为镜像
if root1 is None and root2 is None:
return True
# 如果有一个树为空,则不为镜像
if root1 is None or root2 is None:
return False
# 比较当前节点的值是否相等,并递归比较左右子树
return (root1.val == root2.val) and isMirror(root1.left, root2.right) and isMirror(root1.right, root2.left)
def isSymmetric(root):
if root is None:
return True
return isMirror(root.left, root.right)
推荐的腾讯云相关产品:无
这个问题可以使用迭代的方式解决,迭代过程中使用队列或栈来存储待比较的节点。具体的实现代码如下(使用 Python 语言为例):
from collections import deque
def isSymmetric(root):
if root is None:
return True
queue = deque()
queue.append(root.left)
queue.append(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 or node1.val != node2.val:
return False
queue.append(node1.left)
queue.append(node2.right)
queue.append(node1.right)
queue.append(node2.left)
return True
推荐的腾讯云相关产品:无
以上是关于检查树是否为镜像的完善且全面的答案。
领取专属 10元无门槛券
手把手带您无忧上云