[LeetCode] 101. Symmetric Tree
Given the root of a binary tree, check whether it is a mirror of itself (i.e., symmetric around its center).
Example 1:
Input: root = [1,2,2,3,4,4,3]
Output: true
Example 2:
Input: root = [1,2,2,null,3,null,3]
Output: false
Constraints:
- The number of nodes in the tree is in the range [1, 1000].
- -100 <= Node.val <= 100
所谓的对称,就是每一个node的左子树都等于它的右子树。做法和之前的same tree的问题很类似,只不过这次是一个node的左子树和另一个node的右子树比较是否相同。第一次调用这个function的时候,两个node都是root。
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode() {}
* TreeNode(int val) { this.val = val; }
* TreeNode(int val, TreeNode left, TreeNode right) {
* this.val = val;
* this.left = left;
* this.right = right;
* }
* }
*/
class Solution {
public boolean isSymmetric(TreeNode root) {
return isSame(root, root);
}
public boolean isSame(TreeNode p, TreeNode q) {
if (p == null ^ q == null) {
return false;
}
if (p == null && q == null) {
return true;
}
return p.val == q.val && isSame(p.left, q.right) && isSame(p.right, q.left);
}
}
posted on 2021-12-29 10:08 codingEskimo 阅读(14) 评论(0) 编辑 收藏 举报