设f(b)表示二叉树的高度:
f(b) = 0, b == NULL;
f(b) = MAX{ f(b->left), f(b->right) } + 1;
int getDepth(Node* root)
{
if (root == NULL)
return 0;
else
{
int leftDepth = getDepth(root->left);
int rightDepth = getDepth(root->right);
return leftDepth > rightDepth ?(leftDepth+1):(rightDepth+1)
}
}
PS:算法是基于后序遍历的,即先求出左右子树的高度,在考虑根结点。