解题思路:空树为true;左右子节点不同时为空为false;其他时候比较左右子节点的值并递归执行左子树和右子树。注意:我的思路没有考虑到三层以上的树,因此只通过了80%。
别人的代码:
public class Solution {
public boolean robot(TreeNode left,TreeNode right){
if(left==null && right==null)return true;
else
if(left==null || right==null)
return false;
return left.val==right.val &&
robot(left.left,right.right) &&
robot(left.right,right.left);
}
public boolean isSymmetric(TreeNode root) {
if(root==null)return true;
return robot(root.left,root.right);
}
}我的代码:
import java.util.*;
/*
* public class TreeNode {
* int val = 0;
* TreeNode left = null;
* TreeNode right = null;
* }
*/
public class Solution {
/**
*
* @param root TreeNode类
* @return bool布尔型
*/
public boolean isSymmetric (TreeNode root) {
// write code here
if(root==null){
return true;
}
if((root.left==null)^(root.right==null)){
return false;
}
else if(root.left!=null){
if(root.left.val==root.right.val){
return isSymmetric(root.left)&&isSymmetric(root.right);
}
return false;
}
return true;
}
}
京公网安备 11010502036488号