Leetcode101.对称二叉树 Symmetric Tree(Java)
##Tree##, ##Depth-first Search##, ##Breadth-first Search##
对称二叉树,可以采用DFS、BFS解决
使用DFS递归判断两棵子树是否对称
- 两颗子树的根节点的值相等
- 第一棵树的左子树和第二棵树的右子树相互对称,第一棵树的右子树和第二棵树的左子树相互对称
时间复杂度: O(n)
class Solution {
public boolean isSymmetric(TreeNode root) {
if (root == null) return true;
return dfs(root.left, root.right);
}
public boolean dfs(TreeNode l, TreeNode r) {
if (l == null && r == null) return true;
else if (l == null || r == null || l.val != r.val) return false;
return dfs(l.left, r.right) && dfs(l.right, r.left);
}
}