剑指offer-判断树是否对称

来源:互联网 发布:java德州扑克牌比大小 编辑:程序博客网 时间:2024/05/16 12:38

分析

  1. 若根节点为空,返回TRUE;
  2. 不为空,递归判断左右两颗子树是否对称,即左子树的左孩子==右子树的右孩子 && 左子树的右孩子==右子树的左孩子。
  3. 递归判断函数中,注意递归出口。

代码

public class Solution {    boolean isSymmetrical(TreeNode pRoot)    {        if(pRoot == null) return true;        return isSym(pRoot.left, pRoot.right);    }    boolean isSym(TreeNode root1, TreeNode root2){        // Take care !!!        if(root1 == null && root2 == null){            return true;           }else if(root1 == null || root2 == null){            return false;        }else if(root1.val == root2.val){            return isSym(root1.left, root2.right) && isSym(root1.right, root2.left);        }else{            return false;        }    }}
0 0