二叉树的高度就是从根节点到最深的叶子节点之间的节点数,计算方法使用递归时,判断如果到了树的叶子节点那么就返回0。依次遍历左侧和右侧节点的数量,然后求出最大值再算上当前根节点的数量+1,递归循环返回后得出最终的结果。代码如下:

int depthTree(TirTNode* tree)
{
if (NULL == tree) return 0;
// 计算左子树的高度
int left = depthTree(tree->leftChild);
// 计算右子树的高度
int right = depthTree(tree->rightChild);
// 记录左子树和右子树最深的数量
int max = left > right ? left : right;
// 将高度+1,相当于加上了根节点的数量
max++;
// 返回结果
return max;
}

调用时只需要一句话就可以得到结果了。

printf(“tree height is : %d\n”, depthTree(&treeA));