二叉树递归题目(一)

一:计算布尔二叉树的值

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;  
    }
};
相关推荐
Proxy_ZZ06 分钟前
打造自己的信道编码工具箱——Turbo、LDPC、极化码三合一
c语言·算法·信息与通信
wayz118 分钟前
21天机器学习核心算法学习计划(量化方向)
学习·算法·机器学习
穿条秋裤到处跑9 分钟前
每日一道leetcode(2026.04.09):区间乘法查询后的异或 II
算法·leetcode
超级大只老咪16 分钟前
一维度前缀和解题通用模板(java)
java·开发语言·算法
无限进步_19 分钟前
【C++】重载、重写和重定义的区别详解
c语言·开发语言·c++·ide·windows·git·github
weixin_5134499621 分钟前
walk_these_ways项目学习记录第十篇(通过行为多样性 (MoB) 实现地形泛化)--从仿真到部署
人工智能·学习·算法
历程里程碑23 分钟前
1 . Git本地操作:版本控制 跨平台协作 仓库核心
java·开发语言·数据结构·c++·git·gitee·github
小欣加油26 分钟前
leetcode 42 接雨水
c++·算法·leetcode·职场和发展
ZXF_H31 分钟前
VSCode C/C++函数Ctrl+鼠标点击无法跳转的解决方法
c++·ide·vscode
tankeven32 分钟前
动态规划专题(14):石子合并问题(未完待续)
c++·算法·动态规划