题目
给定一个二叉树,检查它是否是镜像对称的。
思路
从上往下遍历,每次取两个节点,一旦不一样,就返回false。直到遍历完整棵树!
代码
class Solution {
public boolean isSymmetric(TreeNode root)
{
return check(root,root);
}
public boolean check(TreeNode u,TreeNode v)
{
Deque<TreeNode> deque = new LinkedList<>();
deque.add(u);
deque.add(v);
while(!deque.isEmpty())
{
u = deque.poll();
v = deque.poll();
// 两个都为空节点
if(u==null && v==null) continue;
// 其中有一个为空一个不为空 或者 两个节点不为空但是值不相等
if((u==null || v==null) || (u.val!=v.val)) return false;
deque.add(u.left);
deque.add(v.right);
deque.add(u.right);
deque.add(v.left);
}
return true;
}
}
结果
利用对称性,遍历,再进行判空和数值比较!