题目描述
Given a binary tree, find its minimum depth.The minimum depth is the number of nodes along the shortest path from the root node down to the nearest leaf node.
/*如果为空,直接返回0。当节点左右子节点都在的时候取最小;当只存在一个子节点时,取最大; * */ class Solution { public: int run(TreeNode *root) { if(root==NULL){ return 0; } else if(root->left!=NULL&&root->right!=NULL){ return 1+min(run(root->left), run(root->right)); } else{ return 1+max(run(root->left), run(root->right)); } } int minDepth(TreeNode *root) { if (root == NULL) { return 0; } queue<TreeNode*> queue; queue.push(root); int depth = 1; while (!queue.empty()) { int l = queue.size(); for (int i = 0; i < l; i++) { TreeNode *n = queue.front(); queue.pop(); if (n->left == NULL && n->right == NULL) { return depth; } if (n->left != NULL) { queue.push(n->left); } if (n->right != NULL) { queue.push(n->right); } } depth++; } return depth; } };