基本思路:层次遍历二叉树,当找到第一个叶节点返回即可
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); } } } };