leetcode-111. 二叉树的最小深度

在这里插入图片描述

C++ dfs

class Solution {
public:
    int minDepth(TreeNode* root) {
        if(root == nullptr) return 0;
        if(root->left == nullptr && root->right == nullptr) return 1;
        if(root->left == nullptr && root->right != nullptr) return 1 + minDepth(root->right);
        if(root->left != nullptr && root->right == nullptr) return 1 + minDepth(root->left);
        return min(minDepth(root->left),minDepth(root->right)) + 1;
        
    }
};

java dfs

class Solution {
    public int minDepth(TreeNode root) {
        if(root == null) return 0;
        if(root.left == null && root.right == null) return 1;
        if(root.left != null && root.right == null) return minDepth(root.left) + 1;  
        if(root.left == null && root.right != null) return minDepth(root.right) + 1;  
        return Math.min(minDepth(root.left),minDepth(root.right)) + 1;
    }
}

C++ bfs

class Solution {
public:
    int minDepth(TreeNode* root) {
       queue<TreeNode*> q;
       if(root != nullptr) q.push(root);
       else return 0;
       int depth = 0;
       while(!q.empty()){
           int size = q.size();
           if(size > 0) depth++;
           while(size > 0){
               size--;
               TreeNode* t = q.front();
               q.pop();
               if(t->left == nullptr && t->right == nullptr) return depth;
               if(t->left != nullptr) q.push(t->left);
               if(t->right != nullptr) q.push(t->right);

           }
       }
       return depth;
        
    }
};

java bfs

class Solution {
    public int minDepth(TreeNode root) {
        LinkedList<TreeNode> list = new LinkedList<TreeNode>();
        if(root != null){
            list.offerLast(root);
        }else return 0;
        int depth = 0;
        while(!list.isEmpty()){
            int size = list.size();
            if(size > 0) depth++;
            while(size > 0){
                size--;
                TreeNode t = list.pollFirst();
                if(t.left == null && t.right == null) return depth;
                if(t.left != null) list.offerLast(t.left);
                if(t.right != null) list.offerLast(t.right);
            }
        }
        return depth;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值