leetcode41(对称二叉树)
给你一个二叉树的根节点 root
, 检查它是否轴对称。
输入:root = [1,2,2,3,4,4,3] 输出:true
思路:
可以先将左或右子树反转,然后对两者判断是否相同,检查是否对称
或者可以直接递归
对每一个根节点,取它的左右子树,判断左右子树的根节点值,同时递归的查找它的子树
/*** 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 TreeNode invertTree(TreeNode root) {TreeNode res = root;if(root == null) return null;TreeNode left = root.left;root.left = root.right;root.right = left;invertTree(root.left);invertTree(root.right);return res;}public boolean isSameTree(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 isSameTree(p.left, q.left) && isSameTree(p.right, q.right);}public boolean isSymmetric(TreeNode root) {if(root == null) return true;TreeNode res=invertTree(root.left);return isSameTree(res,root.right);}
}