NC234. 二叉树的最小深度
描述
示例1
输入:
{1,2,3,4,5}
输出:
2
示例2
输入:
{1,#,2,#,3}
输出:
3
C 解法, 执行用时: 3ms, 内存消耗: 768KB, 提交时间: 2021-11-26
int my_min(int lhs, int rhs) { return lhs<rhs ? lhs : rhs; } /** * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * }; * * C语言声明定义全局变量请加上static,防止重复定义 */ /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param root TreeNode类 * @return int整型 */ int run(struct TreeNode* root ) { // write code here if( !root ) return 0; return (root->left ? (root->right ? my_min(run( root->left ), run( root->right )) : run( root->left )) : run( root->right )) + 1; }
C++ 解法, 执行用时: 4ms, 内存消耗: 728KB, 提交时间: 2022-02-11
/** * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} * }; */ class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param root TreeNode类 * @return int整型 */ int run(TreeNode* root) { // write code here if (!root) return 0; queue<TreeNode *> q; q.push(root); int depth = 0; while(!q.empty()) { int sz = q.size(); depth += 1; for (int i = 0; i < sz; ++i) { auto 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); } } return 0; } };
C++ 解法, 执行用时: 4ms, 内存消耗: 736KB, 提交时间: 2022-01-20
/** * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} * }; */ class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param root TreeNode类 * @return int整型 */ int run(TreeNode* root) { // write code here if(root == nullptr) return 0; if(root->left == nullptr && root->right == nullptr) return 1; int left = run(root->left); int right = run(root->right); if(root->left == nullptr && root->right != nullptr) return right+1; if(root->left != nullptr && root->right == nullptr) return left+1; return min(left,right) + 1; } };
C++ 解法, 执行用时: 4ms, 内存消耗: 768KB, 提交时间: 2022-08-06
/** * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} * }; */ class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param root TreeNode类 * @return int整型 */ int run(TreeNode* root) { // write code here if(root == nullptr){return 0;} if(root->left == nullptr && root->right == nullptr){ return 1; } int min_depth = 1e8; if(root->left!=nullptr){ min_depth = min(min_depth, run(root->left)); } if(root->right!=nullptr){ min_depth = min(min_depth, run(root->right)); } return min_depth + 1; } };
C++ 解法, 执行用时: 4ms, 内存消耗: 768KB, 提交时间: 2022-06-21
/** * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} * }; */ class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param root TreeNode类 * @return int整型 */ int run(TreeNode* root) { // write code here if(root==nullptr) return 0; if(root->left==nullptr && root->right==nullptr) return 1; int minDepth=1e9; if(root->left!=nullptr) minDepth=min(minDepth, run(root->left)); if(root->right!=nullptr) minDepth=min(minDepth, run(root->right)); return minDepth+1; } };