写点思考性质的文字,最好还是不要太突兀,背景前提什么的还是需要有的……
平衡二叉树是什么?
我自己的理解:
二叉树里面的完全二叉树就是一种很平衡的树,即按照1-23-4567-89101112131415-……这么一行行分叉下去的数。所以在二叉树的定义里,就有了这样的描述:
一个空树(根本没有结点的);或者任意结点,它的左右子树的高度差不大于1(我觉得这里用完全二叉树来辅助记忆挺不错)。
但是要注意一点;
只要满足任意一个结点的左右两子树的高度不大于1就可以是平衡二叉树。而刚才说的完全二叉树,是满足这一条件的“最完全”状态,所以自然也就存在去掉中间某些结点后还是平衡二叉树的“不完全”状态。
由此引出平衡二叉树最小结点数的问题。
如何来理解最小结点数?
开始前的说明
关于高度,初学者容易和深度混淆,深度是从根结点开始的,而高度是从任意结点到叶子结点的。所以这里所说的左右子树的高度差可以这么来理解:
一个结点没有子树了,那么高度就是0(0 - 0 = 0),有一个子结点就为1(1 - 0 = 0)
这样再来理解左右子树的高度差,
假设一棵树有3层,那么把第一层作为一个结点,第二第三层的结点构成这个结点的左右子树,这个3层数的高度也就是2(0、1、2),那么第一层结点的左右子树的高度也就