首先复习一下“深度遍历”
书上的定义是:深度优先搜索是从图中某个顶点v出发,访问此顶点,然后依次从v的未被访问的邻接点出发深度优先遍历图,直至图中所有和v有路径相通的顶点都被访问到;若此时图中尚有顶点未被访问,则另选图中一个未曾被访问的顶点作为起始点,重复上述过程。
以上是针对图的,针对树来说,初始点v就是树的root节点,且一趟就可以遍历完成。
下面是c++的代码实现:
class Solution{
public:
int minDepth(TreeNode *root){
if(!root)
return 0;
if(!root->left)
return 1 + minDepth(root->right);
else if(!root->right)
return 1 + minDepth(root->left);
else
return 1 + min(minDepth(root->right), minDepth(root->left));
}
};