常见面试算法题:二叉树最大深度,最小深度

求一颗二叉树的最大深度
思路:深度优先搜索、递归

int MaxDepth(TreeNode * root)
{
if (root ==NULL)
{
return 0;
}
return max(MaxDepth(root->left),MaxDepth(root->right))+1;
}

求一颗二叉树的最小深度,即从根节点到叶子节点的最短路径长度
易错点:不能直接将上段代码中max改成min,因为需要判断当前节点属性

int MinDepth(TreeNode* root)
{
if (NULL == root)
return 0;
int l = MinDepth(root->left);
int r = MinDepth(root->right);
if (!l)
return r + 1; //只有右子树
if (!r)
return l + 1; //只有左子树
return (l < r) ? l + 1 : r + 1;//有两个子树,选少的
}

你可能感兴趣的:(面试记录)