思路:
对称二叉树定义:对于树中任意两个对称节点L和R,一定有:
- L.val = R.valL.val=R.val :即此两对称节点值相等;
- L.left.val = R.right.valL.left.val=R.right.val :即L的左子节点和R的右子节点对称;
- L.right.val = R.left.valL.right.val=R.left.val :即L的右子节点和R的左子节点对称。
代码:
public class Solution {
boolean isSymmetrical(TreeNode pRoot) {
if(pRoot==null)
return true;
return dfs(pRoot.left,pRoot.right);
}
public boolean dfs(TreeNode l,TreeNode r){
if(l==null && r==null)
return true;
if(l==null || r==null)
return false;
if(l!=null && r!=null && l.val!=r.val)
return false;
return dfs(l.left,r.right) && dfs(l.right,r.left);
}
}