📜  对称树(自身的镜像)(1)

📅  最后修改于: 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

左子树的翻转和右子树一致,因此该树是对称树。