Microsoft leetcode (Symmetric Tree)

Posted jjjiajia

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Microsoft leetcode (Symmetric Tree)相关的知识,希望对你有一定的参考价值。

Symmetric Tree

Given a binary tree, check whether it is a mirror of itself (ie, symmetric around its center).

For example, this binary tree [1,2,2,3,4,4,3] is symmetric:

    1
   /   2   2
 / \ / 3  4 4  3

 

But the following [1,2,2,null,3,null,3] is not:

    1
   /   2   2
   \      3    3

Recursive:
//1. For every level, if root‘s left == root‘s right then we can say it is symmetric.
//2. If root1 && root2 are null return true, if root1 || root2 is null return false.
class TreeNode {
  int val;
  TreeNode left;
  TreeNode right;
  public TreeNode(int val) {
    this.val = val;
  }
}
public boolean isSymmetric(TreeNode root) {
  return isMirror(root, root);
}
public boolean isMirror(TreeNode root1, TreeNode root2) {
  if (root1 == null && root2 == null) return true;
  if (root1 == null || root2 == null) return false;
  return root1.val == root2.val && isMirror(root1.left, root2.right)
    && isMirror(root1.right, root2.left);
}

Iterative:
DFS -> Stack BFS -> Queue
Use stack to traverse all the nodes in the tree and check if left equals to right.

public boolean isSymmetric(TreeNode root) {
  if (root == null) return true;
  Stack<TreeNode> stack = new Stack<>();
  stack.push(root.left);
  stack.push(root.right);
  while(!stack.isEmpty()) {
    TreeNode n1 = stack.pop(), n2 = stack.pop();
    if (n1 == null && n2 == null) continue;
    if (n1 == null || n2 == null || n1.val != n2.val) return false;
    else {
      stack.push(n1.left);
      stack.push(n2.right);
      stack.push(n1.right);
      stack.push(n2.left);
    }
  }
  return true;
}












































以上是关于Microsoft leetcode (Symmetric Tree)的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode-Microsoft-Clone Graph

Microsoft leetcode(Merge K Sorted Lists)

LeetCode-Microsoft-Remove K Digits

LeetCode-Microsoft-Add Two Numbers II

LeetCode-Microsoft-Populating Next Right Pointers in Each Node

python 开发 -- 16集合类型内置方法