二叉树经典面试题

67 阅读1分钟

验证二叉搜索树

给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树。
有效 二叉搜索树]定义如下:
节点的左子树只包含 小于 当前节点的数。
节点的右子树只包含 大于 当前节点的数。
所有左子树和右子树自身必须也是二叉搜索树。

function walk (root) {
  if (!root.left && !root.right) {
    return true
  } else if ((root.left && root.val < root.left.val) || (root.right && root.val > root.right.val)) {
    return false
  } else {
    return walk(root.left) && walk(root.right)
  }
}

判断对称二叉树

function isSymmetry (root) {
  if (!root) {
    return true
  }
  let walk = (left, right) => {
    if (!left && !right) {
      return true
    }
    if ((left && !right) || (!left && right) || (left.val !== right.val)) {
      return false
    }
    return walk(left.left, right.right) && walk(left.right, right.left)
  }
  return walk(root.left, root.right)
}

判断二叉树中序遍历

  • 还有前序和后序遍历思路类似
function middleSort(root) {
  if(node == null) return 
  middleSort(root.left)
  console.log(root.value)
  middleSort(root.right)
}