leetcode --Minimum Depth of Binary Tree

找最短的到叶节点的长度:

一考虑广度优先搜索(使用队列,不用 recursive)

class Solution {
public:
    int minDepth(TreeNode* root) {
        if(!root)
            return 0;
       
            queue<TreeNode*> q;
        q.push(root);
        int minheight=0;
        bool o=false;
        
        while(!q.empty())
        { 
            minheight++;
            int count=q.size();
            cout<<count<<endl;
            
            cout<<(q.front())->val<<endl;
            for(int i=0;i<count;i++)
            {
              TreeNode* l=q.front();
                cout<<l->val<<endl;
                q.pop();
                if((l->right==NULL)&&(l->left==NULL))
                    return minheight;
                if(l->right)
                q.push(l->right);
                if(l->left)
                q.push(l->left);
                    
            }
        
        }
        
        }

};

  

使用递归形式

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) return 1 + minDepth(root->right);
        else if (root->right == NULL) return 1 + minDepth(root->left);
        else return 1 + min (minDepth(root->left),minDepth(root->right));  //有左节点,和右节点,加1             
    }
};

  

原文地址:https://www.cnblogs.com/fanhaha/p/7240499.html