美文网首页
(1) 938. Range Sum of BST

(1) 938. Range Sum of BST

作者: 滑冰的夏虫 | 来源:发表于2019-12-02 05:28 被阅读0次

    递归程序的必要条件:
    1. 必须有收敛条件,并对所有的收敛条件进行处理,结束或者返回值
    2.每一次递归都把当前的问题规模缩小了一点
    3.采用Bottom-up写法时,要分类讨论清楚,当前结果与子集结果的逻辑关系

    Top-down: 在从上往下的过程中判断并更新结果,需要在整个递归中维持一个全局变量。然后可以根据一些条件判断控制递归搜索走的方向。

    private void dfs(TreeNode node, int L, int R, int[] result) {
           if (node == null) {
               return;
           }
           if (node.val >= L && node.val <= R) {
               result[0] += node.val;
           }
            //children
            if (node.val > L) {
               dfs(node.left, L, R, result);
            }
            if (node.val < R) {
               dfs(node.right, L, R, result);
            }
    }
    

    Bottom-up:

    public int rangeSumBST(TreeNode root, int L, int R) {
       if (root == null) {
          return 0;
       }
        //get children result
        int left = rangeSumBST(root.left, L, R);
        int right = rangeSumBST(root.right, L, R);
    
         //logical calculation
         int sum = 0;
         if (root.val < L) {
            sum = right;
         } else if (root.val > R) {
            
         }
    }
    

    相关文章

      网友评论

          本文标题:(1) 938. Range Sum of BST

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