解法一:遞迴
int minDepth(TreeNode* root) { if (root == NULL) return 0; if (root->left == NULL) { return minDepth(root->right) + 1; } else if (root->right == NULL) { return minDepth(root->left) + 1; } else { int left_minDepth = minDepth(root->left); int right_minDepth = minDepth(root->right); return left_minDepth < right_minDepth ? left_minDepth + 1 : right_minDepth + 1; } }
解法二:BFS
int minDepth(TreeNode *root) { if (root == NULL) return 0; queue<TreeNode*> node_queue; node_queue.push(root); int count = 0; while (!node_queue.empty()) { int len = node_queue.size(); count++; for (int i = 0; i < len; ++i) { TreeNode *nodeTmp = node_queue.front(); node_queue.pop(); if (nodeTmp->left) node_queue.push(nodeTmp->left); if (nodeTmp->right) node_queue.push(nodeTmp->right); if (nodeTmp->left == NULL && nodeTmp->right == NULL) return count; } } }