【算法集训】基础数据结构:七、树

第一题 2236. 判断根结点是否等于子结点之和

这一题很简单,只有三个节点,判断就可以了

c 复制代码
/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     struct TreeNode *left;
 *     struct TreeNode *right;
 * };
 */


bool checkTree(struct TreeNode* root){
    return root->left->val + root->right->val == root->val;
}

第二题 104. 二叉树的最大深度

二叉树的最主要操作需要用到递归,这题求最大深度也是如此。

我差不多懂了递归的一个实现思想,按这题来说,maxDepth()求的就是节点的最大深度;先假设这个函数可以实现,所以我们可以调用这个函数直接将root->leftroot->right的最大深度求出来,然后再加根节点的一层, 不就是求的最大深度吗。

c 复制代码
/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     struct TreeNode *left;
 *     struct TreeNode *right;
 * };
 */
 
int max(int a, int b) {
    return a > b ? a : b;
}

int maxDepth(struct TreeNode* root) {
    if(root == NULL) return 0;

    return 1 + max(maxDepth(root->left), maxDepth(root->right)); 
}

第三题 LCR 175. 计算二叉树的深度

此题和上题相同

c 复制代码
/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     struct TreeNode *left;
 *     struct TreeNode *right;
 * };
 */
int calculateDepth(struct TreeNode* root) {
    if(root == NULL) return 0;
    int ldep = calculateDepth(root->left);
    int rdep = calculateDepth(root->right);

    int res = ldep > rdep ? ldep : rdep;
    return res + 1;
}

第四题 2331. 计算布尔二叉树的值

c 复制代码
/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     struct TreeNode *left;
 *     struct TreeNode *right;
 * };
 */
bool evaluateTree(struct TreeNode* root) {
    if(root->val == 0 || root->val == 1) return root->val;

    if(root->val == 2) {
        return evaluateTree(root->right) || evaluateTree(root->left);
    }
        return evaluateTree(root->right) && evaluateTree(root->left);
}
相关推荐
元Y亨H7 小时前
开发者必须掌握的十大核心算法
算法
元Y亨H7 小时前
深度解构:数据结构与算法的理论基石与工程演进
数据结构·算法
元Y亨H8 小时前
数据结构与算法的通俗指南
数据结构·算法
2301_764441338 小时前
用动力学系统(微分方程)为 Kernberg 的客体关系单元提供数学化的操作定义,把“自体—客体“这对心理结构建模成一个二维耦合系统
数据结构·python·算法·数学建模
林泽毅8 小时前
PyTRIO快速入门(二):Datum构建
人工智能·算法·产品
keep intensify8 小时前
最长有效括号
算法·leetcode·动态规划
CoderYanger8 小时前
A.每日一题:1979. 找出数组的最大公约数
java·程序人生·算法·leetcode·面试·职场和发展·学习方法
猫头虎9 小时前
什么是ZCode for GLM-5.2?
开发语言·人工智能·python·科技·算法·ai编程·ai写作
长不胖的路人甲9 小时前
什么是赫夫曼树(哈夫曼树 / Huffman Tree)
python·算法·霍夫曼树
Warren2Lynch10 小时前
掌握 UML 构造型、标记定义与标记值:面向领域特定建模的 UML 扩展全面指南
大数据·算法·uml