一:题目
二:上码
/*** 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 {/**思路:1.我们是利用层序遍历 每次入队的不再是一个结点1>:首次入队是根节点的左右孩子2>:然后我们每次出对是分别是左右子树上的两个结点。我们对这个两个结点进行比较是否为空 值是否相等3>:然后再依次入队的是 左孩子的左节点 右孩子的右节点 左孩子的右节点 右孩子的左节点*/public boolean isSymmetric(TreeNode root) {boolean ans = levelOrder(root);return ans;}public boolean levelOrder (TreeNode root) {Deque<TreeNode> queue = new LinkedList<>(); //这里是不用判断空的 因为我们需要用空值 进行判断是否返回false呢queue.push(root.left);queue.push(root.right);while (!queue.isEmpty()) {TreeNode l_node = queue.pop();TreeNode r_node = queue.pop();if (l_node == null && r_node == null) continue;//右节点为空 左节点不空//左节点不空 右节点为空//都不为空 但值不相等if (l_node == null || r_node == null || r_node.val != l_node.val) return false;queue.push(l_node.left);queue.push(r_node.right);queue.push(l_node.right);queue.push(r_node.left);}return true;} }
最大收获 deque queue = new LinkedList<>(); 这个集合是可以存放空值 null的
ArrayDeque queue = new ArrayDeque<>();是不可以存放空值null的