Leetcode刷题(第98题)——验证二叉搜索树

x33g5p2x  于2022-05-16 转载在 其他  
字(0.7k)|赞(0)|评价(0)|浏览(393)

一、题目

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

二、示例

  1. 输入:root = [2,1,3]
  2. 输出:true

  1. 输入:root = [5,1,4,null,null,3,6]
  2. 输出:false
  3. 解释:根节点的值是 5 ,但是右子节点的值是 4

三、思路
二叉搜索树,如果我们使用中序遍历的话,此时就会返回一个升序的数组。我们可以用一个数组保存值,当向该数组中插入元素时,比较当前数组中的最后一个元素和当前准备插入值的大小即可。
四、代码

  1. /**
  2. * Definition for a binary tree node.
  3. * function TreeNode(val, left, right) {
  4. * this.val = (val===undefined ? 0 : val)
  5. * this.left = (left===undefined ? null : left)
  6. * this.right = (right===undefined ? null : right)
  7. * }
  8. */
  9. /**
  10. * @param {TreeNode} root
  11. * @return {boolean}
  12. */
  13. var isValidBST = function(root) {
  14. let res = []
  15. let flag = true
  16. const rec = (node) => {
  17. if(node.left) rec(node.left)
  18. if(res[res.length - 1] >= node.val) {
  19. flag = false
  20. }else {
  21. res.push(node.val)
  22. }
  23. if(node.right) rec(node.right)
  24. }
  25. rec(root)
  26. return flag
  27. };

五、总结

相关文章