一个二叉树求高度的问题。。很迷惑。。

来源:百度知道 编辑:UC知道 时间:2024/09/19 16:51:25
问一个有点白痴的问题。。我是新手。。。
int TreeHeight(Node *root)
{
if (root == NULL)
return 0;
else
return 1 + max(TreeHeight(root->lchild), TreeHeight(root->rchild));
}
为啥会写成这样?而且他只是返回的0啊?左右子树的高度又从何而来?谢了

该题使用递归;
思路为:非空二叉树的高度等于左右子树的高度中较大值+1;
如果根节点为空,则二叉树是空树,所以没有高度,返回0;
如果根节点不为空,就递归调用treeheight函数,求得左右子树的最大值,所以可以得出二叉树的高度;
函数使用一个 if-else语句,只有当root==null时返回0,其他情况都不会返回0;
建议楼主看多一下递归和c++