二叉树递归题目(一)

一:计算布尔二叉树的值

1.1题目

题目链接:https://leetcode.cn/problems/evaluate-boolean-binary-tree/description/


1.2算法原理


1.3代码

cpp 复制代码
class Solution {
public:
    bool evaluateTree(TreeNode* root) 
    {
        if(root->right == nullptr)
            return root->val;

        bool leftval = evaluateTree(root->left);
        bool rightval = evaluateTree(root->right);

        return root->val == 2 ?  rightval | leftval : rightval & leftval;
    }
};

二:求根节点到叶节点数字之和

2.1题目

题目链接:https://leetcode.cn/problems/sum-root-to-leaf-numbers/description/


2.2算法原理


2.3代码

cpp 复制代码
class Solution {
public:
    int sumNumbers(TreeNode* root) {
        return dfs(root,0);
    }

    int dfs(TreeNode* root,int presum)
    {
        int sum = presum * 10+ root->val;

        if(root->left == nullptr && root->right == nullptr)
            return sum;
        
        int leftsum = 0, rightsum = 0;
        if(root->left)
            leftsum = dfs(root->left,sum);
        if(root->right)
            rightsum = dfs(root->right,sum);

        return leftsum + rightsum;
    }
};

三:二叉树剪枝

3.1题目

题目链接:https://leetcode.cn/problems/binary-tree-pruning/


3.2算法原理


3.3代码实现

cpp 复制代码
class Solution {
public:
    TreeNode* pruneTree(TreeNode* root) 
    {
        if(root == nullptr)
            return nullptr;

        root->left =  pruneTree(root->left);
        root->right = pruneTree(root->right);

        if(root->val == 0 && root->left == nullptr && root->right == nullptr)
        {
            //delete root;//内存泄漏,但是如果节点不是new出来的delete会报错
            root = nullptr;
        }
        return root;  
    }
};
相关推荐
D_evil__6 小时前
【Effective Modern C++】第三章 转向现代C++:16. 让const成员函数线程安全
c++
2601_949146536 小时前
C语言语音通知API示例代码:基于标准C的语音接口开发与底层调用实践
c语言·开发语言
学嵌入式的小杨同学6 小时前
从零打造 Linux 终端 MP3 播放器!用 C 语言实现音乐自由
linux·c语言·开发语言·前端·vscode·ci/cd·vim
wfeqhfxz25887826 小时前
YOLO13-C3k2-GhostDynamicConv烟雾检测算法实现与优化
人工智能·算法·计算机视觉
Aaron15887 小时前
基于RFSOC的数字射频存储技术应用分析
c语言·人工智能·驱动开发·算法·fpga开发·硬件工程·信号处理
Queenie_Charlie7 小时前
前缀和的前缀和
数据结构·c++·树状数组
爱编码的小八嘎8 小时前
C语言对话-21.模板特化,缺省参数和其他一些有趣的事情
c语言
kokunka8 小时前
【源码+注释】纯C++小游戏开发之射击小球游戏
开发语言·c++·游戏
_不会dp不改名_9 小时前
leetcode_3010 将数组分成最小总代价的子数组 I
算法·leetcode·职场和发展
yueyuexiaokeai19 小时前
linux kernel常用函数整理
linux·c语言