Typescript-Algorithms
    Preparing search index...

    Variable symmetric_treeConst

    symmetric_tree: (root: null | TreeNode) => boolean = isSymmetric

    101.对称二叉树

    给你一个二叉树的根节点 root,检查它是否轴对称。


    示例1

    输入: root = [1,2,2,3,4,4,3]
    输出: true


    示例2

    输入: root = [1,2,2,null,3,null,3]
    输出: false


    • 树中节点数目在范围 [1, 1000]
    • -100 <= Node.val <= 100

    Type declaration

      • (root: null | TreeNode): boolean
      • Definition for a binary tree node. class TreeNode { val: number left: TreeNode | null right: TreeNode | null constructor(val?: number, left?: TreeNode | null, right?: TreeNode | null) { this.val = (val===undefined ? 0 : val) this.left = (left===undefined ? null : left) this.right = (right===undefined ? null : right) } }

        Parameters

        • root: null | TreeNode

        Returns boolean

    如果一颗二叉树的所有子树的左右子树都轴对称,那么这棵二叉树就轴对称。

    /**
    * Definition for a binary tree node.
    * class TreeNode {
    * val: number
    * left: TreeNode | null
    * right: TreeNode | null
    * constructor(val?: number, left?: TreeNode | null, right?: TreeNode | null) {
    * this.val = (val===undefined ? 0 : val)
    * this.left = (left===undefined ? null : left)
    * this.right = (right===undefined ? null : right)
    * }
    * }
    */

    function isSymmetric(root: TreeNode | null): boolean {
    // 判断一颗二叉树轴对称就看它的所有子树的左右子树是否轴对称,如果是那么整棵二叉树就轴对称
    function dfs(n1: TreeNode | null, n2: TreeNode | null): boolean {
    if (!n1 && !n2) {
    return true;
    }

    if (!n1 || !n2) {
    return false;
    }

    return n1.val === n2.val && dfs(n1.left, n2.right) && dfs(n1.right, n2.left);
    }

    return !!root && dfs(root.left, root.right);
    };