题目:
给定一棵二叉树,判断其是否是自身的镜像(即:是否对称)
例如: 下面这棵二叉树是对称的
下面这棵二叉树不对称。
数据范围:节点数满足 0 \le n \le 10000≤n≤1000,节点上的值满足 |val| \le 1000∣val∣≤1000
要求:空间复杂度 O(n)O(n),时间复杂度 O(n)O(n)
示例:
输入:{1,2,2,3,4,4,3}
返回值:true
思路:
简单递归就可以了,最关键的是要递归A树左孩子和B树右孩子 以及对应的右和左
复杂度:
时间复杂度:遍历O(n)
空间复杂度:递归最差是O(n),一般为树高
代码:
boolean isSymmetrical(TreeNode pRoot) {
if(pRoot == null) return true;
return recur(pRoot,pRoot);
}
private boolean recur(TreeNode A,TreeNode B){
if(A==null && B==null) return true;
if(A==null || B==null) return false;
if(A.val != B.val) return false;
return recur(A.left,B.right) && recur(A.right,B.left);
}