基本思路:层次遍历二叉树,当找到第一个叶节点返回即可

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