【LeetCode】111. Minimum Depth of Binary Tree
题目:
Given a binary tree, find its minimum depth.
The minimum depth is the number of nodes along the shortest path from the root node down to the nearest leaf node.
提示:
这道题用BFS或者DFS都可以。
代码:
DFS:
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ class Solution { public: int minDepth(TreeNode *root) { if(!root) return 0; if(!root->left) return 1 + minDepth(root->right); if(!root->right) return 1 + minDepth(root->left); return 1+min(minDepth(root->left),minDepth(root->right)); } };
BFS:
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ class Solution { public: int minDepth(TreeNode* root) { int depth = 0; if (root == NULL) return depth; queue<TreeNode*> q; q.push(root); ++depth; while (!q.empty()) { TreeNode* node; int size = q.size(); for (int i = 0; i < size; ++i) { node = q.front(); q.pop(); if (!node->left && !node->right) return depth; if (node->left) q.push(node->left); if (node->right) q.push(node->right); } ++depth; } } };