求出从树根到最近的叶子节点路程,就是求树的最小高度。简单的bfs层次遍历,直到遍历到叶子节点。
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public:
int bfs(TreeNode * root)
{
int sum = 0;
TreeNode * temp, * p1, * p2;
queue<TreeNode *> q;
root -> val = 1;
q.push(root);
while(!q.empty())
{
temp = q.front();
q.pop();
if(temp == NULL)
continue;
if(temp -> right == NULL && temp -> left == NULL)
{
return temp -> val;
}
p1 = temp -> left;
p2 = temp -> right;
if(p1 != NULL)
p1 -> val = temp -> val + 1;
if(p2 != NULL)
p2 -> val = temp -> val + 1;
q.push(temp -> left);
q.push(temp -> right);
}
}
int minDepth(TreeNode* root) {
if(root == NULL)
return 0;
return bfs(root);
}
};