101. Symmetric Tree
Solution
Symmetric tree,要滿足左子樹,右子樹互為境像。
成為境像的條件式,除了兩子樹的根節點相同外,其根節點底下的下層子樹也要互為境像。
T: O(N) Recursive:
public boolean isSymmetric(TreeNode root) {
return isMirror(root, root);
}
public boolean isMirror(TreeNode q, TreeNode p){
if(q == null && p == null) return true;
else if (q == null || p == null) return false;
return q.val == p.val && isMirror(q.left, p.right) && isMirror(q.right, p.left);
}
Iteration
class Solution {
public boolean isSymmetric(TreeNode root) {
Queue<TreeNode> que = new LinkedList<>();
que.add(root);
que.add(root);
while(!que.isEmpty()){
TreeNode p = que.poll();
TreeNode q = que.poll();
if(p == null && q == null) continue;
else if ( p == null || q == null) return false;
else if (p.val != q.val) return false;
que.add(p.left);
que.add(q.right);
que.add(p.right);
que.add(q.left);
}
return true;
}
}
Last updated
Was this helpful?