【LeetCode】#101 对称二叉树

254 阅读1分钟

对称二叉树的判断条件:

  • 根节点相同
  • 左子树的右节点 = 右子树的左节点
  • 左子树的左节点 = 右子树的右节点
// 对称树
const SymmetricalTree = {
  val: 8,
  left: {
    val: 7,
    left: { val: 6, left: null, right: null},
    right: {val: 5, left: null, right: null}
  },
  right: {
    val: 7,
    left: { val: 5, left: null, right: null},
    right: {val: 6, left: null, right: null} 
  }
}

// 非对称树
const BindaryTree = {
  val: 8,
  left: {
    val: 7,
    left: { val: 6, left: null, right: null},
    right: {val: 5, left: null, right: null}
  },
  right: {
    val: 7,
    left: { val: 4, left: null, right: null},
    right: {val: 3, left: null, right: null} 
  }
}
function isSymmetricalTree(pRoot) {
    return isSymmetrical(pRoot, pRoot)
}

function isSymmetrical(node1, node2) {
    if (!node1 && !node2) {
        return true
    }
    if (!node1 || !node2) {
        return false
    }
    if (node1.val != node2.val) {
        return false
    }
    
    return isSymmetrical(node1.left, node2.right) && isSymmetrical(node1.right, node2.left)
}