/** * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * }; */ class Solution { public: /** * * @param root TreeNode类 * @return int整型 */ int run(TreeNode* root) { if (root == nullptr) return 0; // 使用队列进行层次遍历 queue<TreeNode*> q; q.push(root); int depth = 1; // 根节点的深度为1 while (!q.empty()) { int levelSize = q.size(); // 当前层的节点数 for (int i = 0; i < levelSize; ++i) { TreeNode* node = q.front(); q.pop(); // 如果当前节点是叶子节点,返回当前深度 if (node->left == nullptr && node->right == nullptr) { return depth; } // 将当前节点的子节点加入队列 if (node->left != nullptr) { q.push(node->left); } if (node->right != nullptr) { q.push(node->right); } } depth++; // 每处理完一层,深度加1 } return depth; // 理论上不会到达这里 } };