111. Minimum Depth of Binary Tree 二叉树的最小深度
程序员文章站
2024-02-25 15:03:39
...
给定一个二叉树,找出其最小深度。
最小深度是从根节点到最近叶子节点的最短路径上的节点数量。
说明: 叶子节点是指没有子节点的节点。
我的思路就是遍历二叉树。找到叶子节点的深度,然后排序,输出最小值即可
/**
* 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:
void min(TreeNode*root,vector<int> & res,int dep){
if(root==NULL) return ;
if(root->left==NULL&&root->right==NULL) res.push_back(dep);
min(root->left,res,dep+1);
min(root->right,res,dep+1);
}
int minDepth(TreeNode* root) {
if(root==NULL) return 0;
vector<int> res;
min(root,res,1);
sort(res.begin(),res.end());
return res[0];
}
};
AC 利用的是递归的自加性。 简洁舒服
class Solution {
public:
int minDepth(TreeNode* root) {
if (!root)
return 0;
int ld = minDepth(root->left);
int rd = minDepth(root->right);
if (ld > 0 && rd > 0) {
if (ld < rd)
return ld + 1;
else
return rd + 1;
}
else if (ld > 0)
return ld + 1;
else
return rd + 1;
}
};
上一篇: 前端起node服务,看前端项目
推荐阅读
-
111. Minimum Depth of Binary Tree 二叉树的最小深度
-
【LeetCode】104. Maximum Depth of Binary Tree 二叉树的深度 DFS BFS 递归方式 迭代方式 JAVA
-
C++实现LeetCode(111.二叉树的最小深度)
-
21天刷题计划之17.1—maximum-depth-of-binary-tree(二叉树的最大深度)(Java语言描述)
-
数据结构与算法1:二叉树(binary_tree)的前、中、后序(深度优先)和广度优先遍历及python代码实现
-
leetcode-cpp 111.二叉树的最小深度
-
C++实现LeetCode(111.二叉树的最小深度)