给定一个二叉树,检查它是否是镜像对称的。
例如,二叉树 [1,2,2,3,4,4,3] 是对称的。
1
/ \
2 2
/ \ / \
3 4 4 3
但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的:
1
/ \
2 2
\ \
3 3
/** * Definition for a binary tree node. * function TreeNode(val) { * this.val = val; * this.left = this.right = null; * } */ /** * @param {TreeNode} root * @return {boolean} */ function demo(p,q){ //建立两个一样的树 //判断两个树是否都为空 if(!p&&!q){ return true; } //如果两子树中有一个有存在就返回false if(!p||!q){ return false; } //判断两个树的值是否相等 if(p.val == q.val){ //向下进行判断,判断当前节点p的左子树和q右子树的节点,以及当前节点p右子树和q节点的左子树是否相同 return demo(p.left,q.right)&&demo(p.right,q.left); } return false; } var isSymmetric = function(root) { return demo(root,root); };
实现:
既然是对称就设置两个相同的树A和树B,将A树的左子树和B树的右子树进行对比 以及 A树的右子树和B树的左子树进行对比,如果不相同就将返回,如果相同就继续向下执行
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/symmetric-tree
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。