用于找从起点start到终点target的最近距离

    1. /**
    2. * Definition for a binary tree node.
    3. * struct TreeNode {
    4. * int val;
    5. * TreeNode *left;
    6. * TreeNode *right;
    7. * TreeNode() : val(0), left(nullptr), right(nullptr) {}
    8. * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
    9. * TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
    10. * };
    11. */
    12. class Solution {
    13. public:
    14. int minDepth(TreeNode* root) {
    15. if(root == nullptr)
    16. return 0;
    17. queue<TreeNode *> q;
    18. q.push(root);
    19. int minDeep = 1;
    20. while(!q.empty())
    21. {
    22. int len = q.size();
    23. for(int i = 0; i < len; i++)
    24. {
    25. TreeNode* Node = q.front();
    26. q.pop();
    27. if(Node->right == nullptr && Node->left == nullptr)
    28. return minDeep;
    29. if(Node->right != nullptr)
    30. q.push(Node->right);
    31. if(Node->left != nullptr)
    32. q.push(Node->left);
    33. }
    34. minDeep++;
    35. }
    36. return minDeep;
    37. }
    38. };