方法一:广度优先遍历(BFS)
/*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}* TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}* };*/class Solution {public:int minDepth(TreeNode* root) {if(root==NULL){return 0;}queue<pair<TreeNode*,int>>q;q.emplace(root,0);int result=0;while(!q.empty()){TreeNode* head=q.front().first;int dep=q.front().second;q.pop();if(head->left==NULL&&head->right==NULL){result=dep+1;break;}if(head->left!=NULL){q.emplace(head->left,dep+1);}if(head->right!=NULL){q.emplace(head->right,dep+1);}}return result;}};
方法二:深度遍历(DFS)
class Solution {public:int minDepth(TreeNode* root) {if(root==NULL){return 0;}dfs(root,1);return result;}void dfs(TreeNode* root,int depth){if(root==NULL){return;}if(root->right==NULL&&root->left==NULL){if(result>depth){result=depth;}}dfs(root->left,depth+1);dfs(root->right,depth+1);}int result=INT_MAX;};
