From a41c9a4e1841a3c38da8a9cb9e2c7c90aaec636c Mon Sep 17 00:00:00 2001 From: SquidSpirit Date: Mon, 10 Mar 2025 23:43:27 +0800 Subject: [PATCH] feat: 111_minimum_depth_of_binary_tree --- 111_minimum_depth_of_binary_tree/main.cpp | 44 +++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 111_minimum_depth_of_binary_tree/main.cpp diff --git a/111_minimum_depth_of_binary_tree/main.cpp b/111_minimum_depth_of_binary_tree/main.cpp new file mode 100644 index 0000000..59eb0f9 --- /dev/null +++ b/111_minimum_depth_of_binary_tree/main.cpp @@ -0,0 +1,44 @@ +#include +using namespace std; + +struct TreeNode { + int val; + TreeNode *left; + TreeNode *right; + TreeNode() : val(0), left(nullptr), right(nullptr) {} + TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} + TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {} +}; + +class Solution { + public: + int minDepth(TreeNode *root) { + queue bfsQueue; + unordered_map depthTable; + + if (root) { + depthTable[root] = 1; + bfsQueue.emplace(root); + } + + while (!bfsQueue.empty()) { + TreeNode *currentNode = bfsQueue.front(); + bfsQueue.pop(); + + if (!currentNode->left && !currentNode->right) { + return depthTable[currentNode]; + } + + if (currentNode->left) { + depthTable[currentNode->left] = depthTable[currentNode] + 1; + bfsQueue.emplace(currentNode->left); + } + if (currentNode->right) { + depthTable[currentNode->right] = depthTable[currentNode] + 1; + bfsQueue.emplace(currentNode->right); + } + } + + return 0; + } +};