问题背景
给你一个二叉树的根节点 r o o t root root, 检查它是否轴对称。
数据约束
- 树中节点数目在范围 [ 1 , 1000 ] [1, 1000] [1,1000] 内
- − 100 ≤ N o d e . v a l ≤ 100 -100 \le Node.val \le 100 −100≤Node.val≤100
解题过程
二叉树是一种递归结构,整棵树对称,意味着它的任意子树都对称。
把题中一个节点的输入转化成两个节点的比较,解决方案就比较明显了。
具体实现
/*** 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 isSymmetric(root.left, root.right);}private boolean isSymmetric(TreeNode left, TreeNode right) {if(left == null || right == null) {return left == right;}return left.val == right.val && isSymmetric(left.left, right.right) && isSymmetric(left.right, right.left);}
}