判断二叉树是否为对称树?
解题思路:
- 首先我们需要弄清对称的二叉树有什么特点,即:左子树的左节点等于右子树的右节点,右子树的左节点等于左子树的右节点;
- 对于二叉树一类的问题,我们首先必须想到用递归来解决;
- 具体用递归解题时,我们在程序代码中首先判断递归不成立的情况,对于递归成立的情况,我们继续递归
public boolean isSymmetric(TreeNode root) {
if(root == null) return true;
return isEqual(root.left,root.right);
}
public boolean isEqual(TreeNode root1,TreeNode root2){
//判断递归不成立的情况,结束递归
if(root1 == null && root2 == null) return true;
if(root1 == null || root2 == null) return false;
if(root1.val != root2.val) return false;
// 若成立继续用递归求解
return isEqual(root1.left,root2.right) && isEqual(root1.right,root2.left);
}