开学已经倒计时,二叉树的推论还不会证明?快坐上这辆快车!
匆匆,原以为只是一次普通的过年回家,没想到变成了寒假连暑假。时间线推移,来到了八月底,很多同学已经摩拳擦掌准备开学了,然而也有同学对即将到来的线下考试惴惴不安。
多说无益,先把文章看完。
具有n个结点的二叉树可能的形态数为C(2n,n)/(n+1)。
当n等于0,也就是空树的情形,公式成立。接着我们可以再来想一个简单的例子:比如说一个具有三个结点的二叉树,我们用穷举的方式考虑。
可能的情形有:全部倾斜向左,全部倾斜向右,根和两个孩子,根左右,根右左。总共是5种情形,代入我们的公式,没有问题。
其实在这里有个小彩蛋,看到这个公式应该是可以联想起来一些东西的。n个元素顺序入栈,所有可能的出栈序列情况数量也是这个公式。
具有n个结点的二叉树,如果用二叉链表来存储,其二叉链表汇总空指针域的个数为n+1个。
接着我们看两个很相似的定理,很简单。
n(n>=0)个结点的二叉树,可以由它的中序序列和先序序列唯一确定。
n(n>=0)个结点的二叉树,可以由它的中序序列和后序序列唯一确定。
其实,言外之意就是说,有先序序列和后序序列是不能唯一确定一个二叉树的、当然,如果只有一种序列也无法唯一确定一个二叉树。
证明:中序序列和先序序列可以唯一确定一棵二叉树。
当n为0的时候,可以确定,二叉树是一棵空树,结论正确。假设节点数小于n的任何二叉树都可以根据中序序列和先序序列唯一确定。所以只要可以证明对于n个结点的二叉树,也可以根据中序序列和先序序列唯一确定,就可以完事了。
对于这一棵包含n个结点的二叉树,可以假设这课二叉树的先序序列是a0 a1 a2 a3……a(n-1),它的中序序列为b0 b(k-1) bk b(k+1)……b(n-1)。
所以,在中序序列中,k号结点之前的b0到b(k-1)就是根的左子树的中序序列,而k号结点之后的b(k+1)到bn就是根的右子树的中序序列。
与之对应的,在先序序列中,紧跟在a0之后的k个结点a1到ak就一定是左子树的先序序列,其余的a(k+1)到a(n-1)就一定是右子树的先序序列。
综上所述,这棵二叉树的左右子树可以被唯一确定,所以整个二叉树也就可以被唯一确定了。
开学之际,分不清兴奋还是紧张;
各在一方,皆是为梦奔忙;
负重前行,我已学会眼里带光。
感谢阅读,学习使人强大。