原题链接在这里:https://leetcode.com/problems/symmetric-tree/
题目:
Given a binary tree, check whether it is a mirror of itself (ie, symmetric around its center).
For example, this binary tree is symmetric:
1 / \ 2 2 / \ / \ 3 4 4 3
But the following is not:
1 / \ 2 2 \ \ 3 3
题解:
本题与Same Tree类似。这里比较是否symmetric, 也是用recursion, 需要写一个helper function, 递归调用,每次对称着比较。
Time Complexity: O(n), n是tree的node数目. Space: O(logn).
AC Java:
1 /** 2 * Definition for a binary tree node. 3 * public class TreeNode { 4 * int val; 5 * TreeNode left; 6 * TreeNode right; 7 * TreeNode(int x) { val = x; } 8 * } 9 */ 10 public class Solution { 11 public boolean isSymmetric(TreeNode root) { 12 if(root == null){ 13 return true; 14 } 15 return isSymm(root.left, root.right); 16 } 17 18 private boolean isSymm(TreeNode p, TreeNode q){ 19 if(p == null && q == null){ 20 return true; 21 } 22 if(p == null || q == null){ 23 return false; 24 } 25 return p.val == q.val && isSymm(p.left, q.right) && isSymm(p.right, q.left); 26 } 27 }