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.
Suppose we have a tree like this:1
/ \
2 3
/
4
We want to get the minDepth of the binary tree. Thus, when we reach node 3, we get the value already. We dont need to go further down to 4, we can give the depth value of 4 to INT_MAX.
There are several method to solve this problem.
1: BFS. once we found a node has no leaves, it is the minDepth node.
2: DFS.
void minDepth(TreeNode* root, int& minDep, int currDepth) {
if(!root) {
minDep = min(minDep, currDepth);
return;
}
currDepth = currDepth + 1;
minDepth(root->right, minDep, currDepth);
minDepth(root->left, minDep, currDepth);
}3: Set a flag to end it faster.
int minDepth(TreeNode* root, bool hasBrother) {
if(!root) return hasBrother ? INT_MAX : 0;
return 1 + min(minDepth(root->left, root->right != NULL), minDepth(root->right, root->left != NULL));
}
int minDepth(TreeNode* root) {
return minDepth(root, false);
}

本文介绍如何通过广度优先搜索(BFS)、深度优先搜索(DFS)和快速结束法来解决寻找二叉树最小深度的问题。通过实例演示每种方法的实现过程,并解释其原理。
459

被折叠的 条评论
为什么被折叠?



