一. 问题描述
给定一个二叉树,检查它是否是镜像对称的。
例如,二叉树 [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
二. 解题思路
本题思路:采用递归+深度搜素的方式进行求解。
步骤一:递归函数(节点1 p,节点2 q)。并比较节点p和q的值是否相等。
步骤二:当相等时,进行递归,将p的左子树与q的右子树相结合进行递归函数递归,将p的右子树与q的左子树相结合进行函数递归,重复步骤一。
步骤三:如果所有返回为true,则最终返回true,否则返回false。
三. 执行结果
执行用时 :0 ms, 在所有 java 提交中击败了100.00%的用户
内存消耗 :37.7 MB, 在所有 java 提交中击败了67.38%的用户
四. Java代码
class Solution { public boolean isSymmetric(TreeNode root) { if(root==null) return true; return treeN(root.left,root.right); } public boolean treeN(TreeNode p,TreeNode q){ if(p==null&&q==null) { return true; }else if(p==null||q==null) { return false; } if(p.val==q.val) { if(treeN(p.left, q.right)&&treeN(p.right,q.left)) return true; }else { return false; } return false; } }
原文:https://www.cnblogs.com/xiaobaidashu/p/11800042.html