【Leetcode算法day16】

文章介绍了使用递归方法解决二叉树的最大深度、n叉树的最大深度和最小深度问题。通过递归函数,分别计算左右子树的深度,并结合根节点确定整个树的深度。对于最小深度,特别考虑了只有一个子树的情况。此外,还提到了计算完全二叉树节点数量的通用方法。
摘要由CSDN通过智能技术生成

代码随想录打卡day16

二叉树3(先用递归,时间不够,迭代方法二刷用)

递归三部曲回顾:
递归函数的参数和返回值;递归终止条件;确定单层递归的逻辑

  1. 104二叉树的最大深度
class Solution {前序求深度后序求高度,根节点的高度对应二叉树的最大深度
private:
    int getmaxdepth(TreeNode* temp){
        if(temp == nullptr) return 0;
        int leftdepth = getmaxdepth(temp->left);
        int rightdepth = getmaxdepth(temp->right);
        int result = 1 + max(leftdepth,rightdepth);
        return result;
    }
public:
    int maxDepth(TreeNode* root) {
        return getmaxdepth(root);//Termination condition
    }
};
  1. 559n叉树的最大深度(二刷做)

  2. 111二叉树的最小深度

class Solution {
public:
    int getminDepth(TreeNode* Node){
        if(Node == nullptr) return 0;
        int minDepth;
        int leftdepth = getminDepth(Node->left);
        int rightdepth = getminDepth(Node->right);
        //注意最短路径是到叶子节点的距离,如果有一个子树完全没节点要排除这些情况
        if(Node->left == nullptr && Node->right != nullptr){
            minDepth = rightdepth + 1;
        }
        else if(Node->right == nullptr && Node->left != nullptr){
            minDepth = leftdepth + 1;
        }
        else{
            minDepth = min(leftdepth, rightdepth) + 1; 
        }
        return minDepth;
    }

    int minDepth(TreeNode* root) {
        return getminDepth(root);
    }
};
  1. 222完全二叉树的节点个数(这里用了通用方法)
class Solution {
public:
    int getNodeNum(TreeNode* Node){
        if( Node == nullptr ) return 0;
        int leftNum = getNodeNum(Node->left);
        int rightNum = getNodeNum(Node->right);
        int sum = 1 + leftNum + rightNum;
        return sum;
    }
    int countNodes(TreeNode* root) {
        return getNodeNum(root);
    }
};

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值