对称二叉树-简单

难度:简单

题目描述:
给定一个二叉树,检查它是否是镜像对称的。

    1
   / \
  2   2
 / \ / \
3  4 4  3
1
2
3
4
5


解题思路:
利用递归

var isSymmetric = function (root) {
  if (root === null) return true;
  function compare(leftRoot, rightRoot) {
    if (leftRoot === null && rightRoot === null) return true;
    if (leftRoot === null || rightRoot === null) return false;
    if (leftRoot.val !== rightRoot.val) return false;
    return (
      compare(leftRoot.left, rightRoot.right) &&
      compare(leftRoot.right, rightRoot.left)
    );
  }
  return compare(root.left, root.right);
};
1
2
3
4
5
6
7
8
9
10
11
12
13


层序遍历二叉树,判断每一层的二叉树节点的值是否对称

var isSymmetric = function (root) {
  if (!root) return true;
  let queue = [root];

  while (queue.length) {
    let size = queue.length;
    const levels = [];
    while (size-- > 0) {
      const ele = queue.shift();
      if (ele === null) {
        levels.push(ele);
      } else {
        levels.push(ele.val);
        queue.push(ele.left);
        queue.push(ele.right);
      }
    }
    let i = 0;
    j = levels.length - 1;
    while (i < j) {
      if (levels[i] !== levels[j]) {
        return false;
      }
      i++;
      j--;
    }
  }

  return true;
};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
最后更新时间: 5/15/2020, 10:43:35 PM