是对称二叉树的充分必要条件有两个
- 根节点相同
- 第一个左子树 == 第二个右子树; 第一个右子树 == 第二个左子树
步骤如下 :
- 首先判断根节点,如果根节点为空,说明就是一颗空的树,对称的二叉树
- 左右两个树的根节点,对称(左边左子树==右边右子树 && 左边右子树 == 右边左子树)遍历左右两个子树
function dfs(L, R) {
if (L == null && R == null) return true; // 左右两个子树都是空的
if (L == null || R == null || L.val != R.val) return false; // 左右两个子树不全为空 一定不是对称的树
return dfs(L.left,R.right) && dfs(L.right,R.left); // 左右两个树都不是空 再对称的遍历
}
var isSymmetric = function(root) {
if (root == null) return true;
return dfs(root.left, root.right);
};