解法一:
使用队列的方式进行层序遍历,判断同一层的值是否对称
public boolean isSymmetric(TreeNode root) {
if (root == null || (root.left == null && root.right == null))
return true;
ArrayList<TreeNode> list = new ArrayList<>();
list.add(root);
return isFlag(list);
}
public boolean isFlag(ArrayList<TreeNode> list) {
if (list.size() == 0)
return true;
ArrayList<TreeNode> arr = new ArrayList<TreeNode>();
int left = 0, right = list.size() - 1;
while (left <= right) {
TreeNode l = list.get(left);
TreeNode r = list.get(right);
if (l == null && r == null) {
} else if (l == null || r == null) {
return false;
} else if (l.val != r.val) {
return false;
}
left++;
right--;
}
for (int i = 0; i < list.size(); i++) {
TreeNode node = list.get(i);
if (node == null)
continue;
else {
arr.add(node.left);
arr.add(node.right);
}
}
return isFlag(arr);
}
4/17/26Less than 1 minute