📅  最后修改于: 2023-12-03 14:53:39.981000             🧑  作者: Mango
对称树是一种特殊的树结构,在该树结构中,每个节点的左右子树互相镜像。也就是说,如果将树中某个节点的左子树进行翻转,那么它就和右子树一模一样了。
对称树通常用于对称的问题,比如镜像二叉树,镜像字符串等等。
下面是对称树的实现:
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
def is_symmetric(root: TreeNode) -> bool:
if not root:
return True
return check(root.left, root.right)
def check(left: TreeNode, right: TreeNode) -> bool:
if not left and not right:
return True
if not left or not right:
return False
return (left.val == right.val and check(left.left, right.right)
and check(left.right, right.left))
递归地比较根节点的左右两个子节点,如果都为空,则返回True。如果一个节点为空,另一个非空,则返回False。
如果根节点的左右两个子节点都非空,那么比较这两个节点的值是否相等,以及这两个节点的左右子节点是否对称。
如果左右子节点都对称,则返回True;否则,返回False。
下面是一个对称树的示例:
1
/ \
2 2
/ \ / \
3 4 4 3
该树是对称树,因为它的左右两个子树互相镜像,即左子树为:
2
/ \
3 4
右子树为:
2
/ \
4 3
左子树的翻转和右子树一致,因此该树是对称树。