树的练习6--------938.二叉搜索树的范围和

题目:点这里

解法:

cpp 复制代码
/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode() : val(0), left(nullptr), right(nullptr) {}
 *     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
 *     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
 * };
 */
class Solution {
public:
    int rangeSumBST(TreeNode* root, int low, int high) {
        int v=0;
        if(root==NULL){
            return 0;
        }
        if(root->val>=low&&root->val<=high){
            v = root->val;
        }
        return v+rangeSumBST(root->left,low,high)+rangeSumBST(root->right,low,high);
    }
};

正确的做法应该是,找到符合条件的,就加起来继续往下找,

递归的本质就是:当前节点的贡献+左子树的贡献+右子树的贡献,三者缺一不可。

错误解法:

cpp 复制代码
/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode() : val(0), left(nullptr), right(nullptr) {}
 *     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
 *     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
 * };
 */
class Solution {
public:
    int rangeSumBST(TreeNode* root, int low, int high) {
        if(root==nullptr){
            return 0;
        }
        if(root->val>=low&&root->val<=high){
            return root->val;
        }
        return rangeSumBST(root->left,low,high)+rangeSumBST(root->right,low,high);
    }
};

我的错误代码思路就是在左子树里面找到符合要求的值,然后在右子树里面找到符合要求的值,最后把他们加起来,但这个题目的思路应该是依此判断根节点左子树右子树,最后把他们三者加起来。其实我后来醒悟过来了,但是我在做的时候一直想不到应该怎么去改变我的代码去实现对应的功能。

反思

根据题目的要求的特定思路,建立适宜的代码,要求返回加和的这种,就需要在递归过程中返回加和的结果。

相关推荐
神仙别闹10 小时前
基于 C++ 实现(控制台)学生成绩管理系统
开发语言·c++
会周易的程序员10 小时前
5 节点边缘冗余方案(上):基于 aiRaft 的物联网高可用控制面设计
c++·分布式·物联网·raft·iot·共识
有点。10 小时前
C++03阶段练习(练习题)
数据结构·算法·图论
周末也要写八哥12 小时前
经典算法实例:游戏中弱角色的数量(二)
算法
是Yu欸12 小时前
鸿蒙PC移植:2048 从网页小游戏到 AI 桌面应用
大数据·人工智能·算法·数据挖掘·openharmony·codex
鹿角片ljp12 小时前
KV Cache 解析
java·算法
liliangcsdn12 小时前
IVOL与偏度因子的对比测量分析
算法
qq_1998868713 小时前
第6板块·第4节:构建系统与多文件项目
c++·人工智能·gpu算力
threerocks14 小时前
Jev 入门第一课
算法
汉克老师14 小时前
GESP2026年9月认证C++三级( 第三部分编程题(2、分割字符串))精讲
c++·gesp·小学生·学c++编程