二叉树的最小深度
问题描述:
给出一棵如下的二叉树:
1
/ \
2 3
/ \
4 5
这个二叉树的最小深度为 2
解题思路:
用递归算法,分别遍历根结点的左子树和右子树,每递归一次,结点到根结点的距离加一。递归完成后,返回叶子结点到根结点的最小距离。需要注意的是,根结点只有右子树而没有左子树时,二叉树的最小深度不为0.这时,需要用递归算法遍历根结点的右子树,与上述方法一致;同理可得根结点只有左子树的情况。
代码实现:
class Solution {
public:
/**
* @param root: The root of binary tree.
* @return: An integer
*/
int minDepth(TreeNode *root) {
// write your code here
int p,q;
if(root==NULL) return 0;
if(root->right==NULL&&root->left==NULL)
return 1;
if(root->right==NULL&&root->left!=NULL){
return minDepth(root->left)+1;
}
if(root->right!=NULL&&root->left==NULL){
return minDepth(root->right)+1;
}
p=minDepth(root->left)+1;
q=minDepth(root->right)+1;
return p>q?q:p;
}
};
A题感悟:
自己对递归算法依旧理解不透彻,在敲代码的过程中走了许多弯路。二叉树的最大深度与这道题相比较的话,这道题较难,两者的基本思路是一致的,但是需要注意不同之处。
2106

被折叠的 条评论
为什么被折叠?



