原题链接在这里:https://leetcode.com/problems/symmetric-tree/
本题与Same Tree类似。这里比较是否symmetric,也是用recursion,需要写一个helper,递归调用,不过每次对称着比较。
终止条件:同为null, return true; one is null, the other is not, return false; 同时不为null, val不同return false.
Time O(n), Space O(logn).
AC Java:
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
public class Solution {
public boolean isSymmetric(TreeNode root) {
if(root == null){
return true;
}
return helper(root.left, root.right);
}
private boolean helper(TreeNode p, TreeNode q){
if(p == null && q == null){
return true;
}
if(p == null || q == null){
return false;
}
if(p.val != q.val){
return false;
}
return helper(p.left,q.right) && helper(p.right, q.left);
}
}