题目
给你一个二叉树的根节点 root , 检查它是否轴对称。
输入: root = [1,2,2,3,4,4,3]
输出: true
思路
- 采用递归访问
- 递归出口,节点不存在时
- 递归判断左子树和右子树是否
代码
/**
* @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
}