一、题目
二、分析
1.看到题目就想到利用递归去解决问题,首先第一点要不断地去判断两边节点,第二点递归可以提升代码的速度
2.在递归里面首先我们要先考虑两边节点都是否为空,都为空说明,前面的遍历对比都是对的,所以输出true;第二点若其中有个节点为空,另个节点不为空,说明没有存在镜像,输出false;最后在递归里头我们是需要不断的遍历比较两边的节点的,怎么去判断比较,只要左树的左节点等于右树的右节点的值,左树的右节点等于右树的左节点
三、代码展示
/** * Definition for a binary tree node. * function TreeNode(val) { * this.val = val; * this.left = this.right = null; * } */ /** * @param {TreeNode} root * @return {boolean} */ var isSymmetric = function(root) { if(!root) return true; function dfs(node1,node2){ //先判断两个节点是否为空 if(!node1 && !node2 ) return true; //判断两个节点其中有个为空 else if(!node1 || !node2 ) return false; return( node1.val === node2.val && dfs(node1.left, node2.right) && dfs(node1.right, node2.left) ) }; return dfs(root.left,root.right); };