基本思路:层次遍历二叉树,当找到第一个叶节点返回即可
class Solution {
public:
int run(TreeNode *root) {
if(root == NULL)
return 0;
int depth = 0;//记录当前的层数
queue<TreeNode*> myqueue;//利用一个队列来存储树的节点
myqueue.push(root);
TreeNode *node;
while(!myqueue.empty())
{
int size = myqueue.size();//记录当前层的节点数量
depth++;
for(int i=0; i<size; i++)
{
node = myqueue.front();
myqueue.pop();
if(node->left == NULL && node->right == NULL)
return depth;//碰到的第一个叶节点则返回当前的层数
if(node->left != NULL)
myqueue.push(node->left);
if(node->right != NULL)
myqueue.push(node->right);
}
}
}
};


京公网安备 11010502036488号