美文网首页JavaScript
LeetCode题解:938. 二叉搜索树的范围和,DFS,详细

LeetCode题解:938. 二叉搜索树的范围和,DFS,详细

作者: Lee_Chen | 来源:发表于2023-02-16 13:16 被阅读0次

    解题思路:

    1. 对于二叉搜索树的任意节点,左子树的所有节点值都小于它的值,右子树的所有节点值都小于它的值。
    2. 使用递归进行DFS搜索,如果当前节点的值小于low,只要向右子树搜索。如果当前节点的值大于high只要向左子树搜索。
    3. 如果当前节点的值在[low, high]之间,就将其与子树的值相加返回
    /**
     * @param {TreeNode} root
     * @param {number} low
     * @param {number} high
     * @return {number}
     */
    var rangeSumBST = function (root, low, high) {
      // 如果当前节点为空,不存在值,返回0
      if (!root) {
        return 0
      }
    
      // 当前节点的值小于low,它左侧的值都小于low,因此只要查找右侧节点
      if (root.val < low) {
        return rangeSumBST(root.right, low, high)
      }
      // 当前节点的值大于high,它左侧的值都大于high,因此只要查找右侧节点
      if (root.val > high) {
        return rangeSumBST(root.left, low, high)
      }
    
      // 如果当前节点的值在[low, high]之间,就将其与子树的值相加返回
      return (
        root.val +
        rangeSumBST(root.left, low, high) +
        rangeSumBST(root.right, low, high)
      )
    }
    

    相关文章

      网友评论

        本文标题:LeetCode题解:938. 二叉搜索树的范围和,DFS,详细

        本文链接:https://www.haomeiwen.com/subject/yrepkdtx.html