/**
 * struct TreeNode {
 *  int val;
 *  struct TreeNode *left;
 *  struct TreeNode *right;
 * };
 */

class Solution {
  public:
    /**
     *
     * @param root TreeNode类
     * @return int整型
     */
    int run(TreeNode* root) {
        // write code here
        if (root == nullptr) return 0;

        std::queue<std::pair<TreeNode*, int>> q;
        q.push({root, 1});  // 节点和深度

        while (!q.empty()) {
            auto [node, depth] = q.front();
            q.pop();

            // 检查是否是叶子节点
            if (node->left == nullptr && node->right == nullptr) {
                return depth;
            }

            if (node->left != nullptr) {
                q.push({node->left, depth + 1});
            }
            if (node->right != nullptr) {
                q.push({node->right, depth + 1});
            }
        }

        return 0;  // 不会到达这里
    }
};