二叉树采用二叉链表存储:编写计算整个二叉树高度的算法

二叉树采用二叉链表存储:编写计算整个二叉树高度的算法
(二叉树的高度也叫二叉树的深度)

代码思路
首先你要明白什么是树的高度,简言之就是树有多少层,如下图:
下面这棵树的高度就是4
二叉树采用二叉链表存储:编写计算整个二叉树高度的算法_第1张图片
首先我们观察根节点,根节点左子树高度是2,右子树高度是3
那么我们取左右子树高度较大值3,再加上根节点自己一个,那根节点高度就是3+1=4

那么问题来了,我们怎么知道根节点左右子树高度呢?
那就遍历一下根节点左右子树呗,问题转换成求结点左右子树高度,
再然后问题就转换成,求根节点左右子树的子树高度了。。。

这样是不是就是我们熟悉的递归啊。

代码实现如下:

int BiTreeDepth(BiTree T) {
	if (T != NULL) {//递归退出条件
		return 0;
	}
	int i = 0;//标记左子树高度
	int j = 0;//标记右子树高度
	if (T->lchild) {//如果还有左子树,往下递归
		i = BiTreeDepth(T->lchild);
	}
	else {
		i = 0;
	}
	if (T->rchild) {//如果还有右子树,往下递归
		j = BiTreeDepth(T->rchild);
	}
	else {
		j = 0;
	}
	return i >= j ? i+1 : j+1;//向上一层结点返回该子树的深度,注意这里要+1因为还有一个根节点高度
}

你可能感兴趣的:(数据结构代码汇总,算法,数据结构,树的高度)