题目描述
请实现一个函数,用来判断一颗二叉树是不是对称的;
注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的;
解题思路
首先根节点以及其左右子树,左子树的左子树和右子树的右子树相同;
左子树的右子树和右子树的左子树相同即可,采用递归;
非递归也可,采用栈或队列存取各级子树根节点;
boolean isSymmetrical(TreeNode pRoot) {
if (pRoot == null) {
return true;
}
return check(pRoot.left, pRoot.right);
}
private boolean check(TreeNode t1, TreeNode t2) {
if (t1 == null && t2 == null) {
return true;
}
if (t1 == null || t2 == null) {
return false;
}
if (t1.val != t2.val) {
return false;
}
return check(t1.left, t2.right) && check(t1.right, t2.left);
}