刚刚接触卡特兰数的时候,对这个结论很蒙,因为左右括号、火车进站很好理解,结果是个2*n的序列,与卡特兰数的证明可以直接对应。但是对于二叉树,我却很难想到怎么构造成2*n个数的数列。
可以把二叉树转换成完全二叉树进行理解。
对于n个节点的二叉树,我们把这n个都当作父亲节点,一定可以补充(n+1)个叶子节点,使之成为一棵(2n+1)个节点的完全二叉树。我们把原来的二叉树称作父亲树,即全是父亲节点的树。
一棵父亲树一定与一棵完全二叉树一一对应。
(图片来自https://blog.csdn.net/Dashi_Lu/article/details/90109542)
证明:
对于一棵完全二叉树,分为叶子节点和父亲节点。
首先,一棵父亲树到完全树加叶子节点只有一种方式,不会出现一颗父亲树对应多种完全树,所以这是一个映射。
任意一棵完全二叉树,删除所有叶子节点都是一颗父亲树。所以父亲树到完全二叉树是满射。
对于两个不同的父亲树,添加叶子后的完全二叉树一定不同。所以父亲树到完全二叉树是单射。
所以父亲树到完全二叉树是双射。完全二叉树的数量与父亲树的数量是相同的。
<