求二叉树高度

二叉树的高度就是从根节点到最深的叶子节点之间的节点数,计算方法使用递归时,判断如果到了树的叶子节点那么就返回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));

 

评论