算法-二叉树:二叉树的最小深度
求一颗二叉树的最小深度,根节点的深度为1。最小深度:从根节点到最近叶子节点的最短路径上的节点数量。
//方法一:递归
int height(TreeNode* root){
if(root == NULL) return 0;
//如果左子树为空,那么最小深度按照右子树计算
if(!root->left && root->right){
return 1+height(root->right);
}
if(!root->right && root->left){
return 1+height(root->left);
}
//都不为空 or 都为空
return 1+min(height(root->left),height(root->right));
//下面为错误写法!!!如果左右某一颗子树为空的话,left或right为0,但是这个值不是最小深度,没有叶子节点
// int left = height(root->left);
// int right = height(root->right);
// return 1+min(left, right);
}
//方法二:迭代法,使用层序遍历最合适
int height(TreeNode* root){
if(root == NULL) return 0;
queue<TreeNode*> que;
que.push(root);
int count = 0;
while (!que.emp