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
}
};

浙公网安备 33010602011771号