/**
* 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));
}
};
class Solution {
public:
// 迭代
int minDepth(TreeNode* root) {
if (!root) return 0;
queue<TreeNode*> que;
que.push(root);
int depth = 0;
while (!que.empty()) {
int size = que.size();
TreeNode* node;
depth++;
int flag = 0;
for (int i = 0; i < size; i++) {
node = que.front();
que.pop();
if (node->left) que.push(node->left);
if (node->right) que.push(node->right);
if (!node->left && !node->right) {
flag = 1;
break;
}
}
if (flag == 1)
break;
}
return depth;
}
};
111. 二叉树的最小深度(层序、递归)
最新推荐文章于 2022-06-30 15:23:57 发布
这篇博客介绍了如何使用递归和迭代两种方法计算二叉树的最小深度。递归方案中,如果左子树为空,则返回右子树的最小深度加一,反之亦然;如果左右子树都非空,则返回较小子树的最小深度加一。迭代方案通过队列进行广度优先搜索,当遇到没有左右子节点的节点时,跳出循环,返回当前深度。这两种方法都是解决二叉树问题的经典思路。
摘要由CSDN通过智能技术生成