8、JS对称二叉树

103 阅读1分钟

题目

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

图片.png

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

思路

  1. 采用递归访问
  2. 递归出口,节点不存在时
  3. 递归判断左子树和右子树是否

代码

/**
 * @param {TreeNode} root
 * @return {boolean}
 */
var isSymmetric = function(root) {
    //调用判断函数,参数为第一个根节点的左右子树
    return check(root.left,root.right)
}
//定义一个函数用来检查左右子树是否对称
function check(leftTree,rightTree){
    //首先判断传进来的左右子树是否为空
    if(!leftTree&&!rightTree)return true
    if(!leftTree||!rightTree)return false
    //判断左右子树的值是否相等
    let flag=leftTree.val==rightTree.val
    //检查左子树的左子树和右子树的右子树是否相等
    let check1=check(leftTree.left,rightTree.right)
    //检查左子树的右子树和右子树的左子树
    let check2=check(leftTree.right,rightTree.left)
    //以上条件都满足才能算是对称,并且返回真假值
    return flag&&check1&&check2
}