思路1
利用前序遍历,根左右
代码1
class Solution {
public:int result = 10005;void getDepth(TreeNode* node, int depth){if(node->left == nullptr && node->right == nullptr){if(depth < result){result = depth;}}if(node->left){depth++;getDepth(node->left, depth);depth--;}if(node->right){depth++;getDepth(node->right, depth);depth--;}return;}int minDepth(TreeNode* root) {if (root == NULL) return 0;getDepth(root, 1);return result;}
};
思路2
利用后序遍历,求得符合条件的最小值再返回,使用后序遍历
代码2
class Solution {
public:int minDepth(TreeNode* root) {if (root == NULL) return 0;int leftdepth = minDepth(root->left);int rightdepth = minDepth(root->right);if(root->left == nullptr && root->right != nullptr) return 1 + rightdepth;if(root->left != nullptr && root->right == nullptr) return 1 + leftdepth;return 1 + min(leftdepth, rightdepth);}
};