Problem: 101. 对称二叉树
文章目录
思路
看到这个题,想到的解题方法是使用递归实现。判断二叉树是否对称,需要判断根节点的左子树和右子树是否对称。所以从根节点开始,递归判断左子树的左节点是否和右子树的右节点是否相同,左子树的右节点和右子树的左节点是否相同。如下图所示:
解题方法
从根节点开始,递归判断判断左子树的左节点是否和右子树的右节点是否相同,左子树的右节点和右子树的左节点是否相同。如果两个节点同时为空,返回true,都不为空的情况下判断val是否相同,相同则调用递归方法进入下一层判断。其他情况返回false
Code
java
/**
* 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) {
if(root == null){
return true;
}
return judge(root.left,root.right);
}
public boolean judge(TreeNode l , TreeNode r){
if(l==null && r==null){
return true;
}
if(l!=null && r!=null){
if(l.val == r.val){
return judge(l.left,r.right) && judge(l.right,r.left);
}
}
return false;
}
}