题解 | #对称的二叉树#
对称的二叉树
https://www.nowcoder.com/practice/ff05d44dfdb04e1d83bdbdab320efbcb
。。。有点笨蛋但好懂的解法
/* function TreeNode(x) { this.val = x; this.left = null; this.right = null; } */ function isSymmetrical(pRoot) { // write code here //空树---对称 if(!pRoot) return true; //只有根节点的树---对称 if(pRoot.left == null && pRoot.right == null) return true; //如果左右子树二缺一 --- 不对称 if(pRoot.left && pRoot.right){ //如果左右两树根的值不相等,不用往下判断了 --- 不对称 if(pRoot.left.val !== pRoot.right.val) return false; }else return false; //中序遍历--将节点值放入数组 this.inorder = function(root,arr){ if(arr === undefined){ arr = []; } if(!root) return null; this.inorder(root.left,arr); arr.push(root.val); this.inorder(root.right,arr); return arr; }; //遍历生成数组 var leftArr = this.inorder(pRoot.left,[]); var rightArr = this.inorder(pRoot.right,[]); //翻转后的左子树数组和右子树数组对比 //数值相同---对称 if(leftArr.reverse().toString() == rightArr.toString()) return true; return false; } module.exports = { isSymmetrical : isSymmetrical };