先序序列为a,b,c,d 的不同二叉树的个数是 () 。
13
14
15
16
根据二叉树前序遍历和中序遍历的递归算法中递归工作栈的状态变化得出:前序序列和中序序列的关系相当于以前序序列为入栈次序,以中序序列为出栈次序。因为前序序列和中序序列可以唯一地确定一棵二叉树,所以题意相当于“以序列 a,b,c,d 为入栈次序,则出栈序列的个数为?”,对于 n 个不同元素进栈,出栈序列的个数为 =14 。(来自王道论坛)
卡特兰数的应用:
套公式:C(2n,n)/(n+1)即可
(1/(n+1))*Cn2n
只给出了前序序列,则二叉树未确定,相当于求n个节点的二叉树可能的个数有多少个,直接套用公式C 2 n n /(n+1)
由于先序排列的顶点个数不多,因此可以直接枚举。枚举时,为了防止重复或者漏掉,我们可以按照每层的顶点数进行分类讨论。注意:接下来枚举的是二叉树的形状,因此不要在意顶点的标记。
共种。
共种。显然,对于任意一种形状,它的满足题意的顶点标记的填法有且仅有一种。综上所述,一共有14种。选B。
这道题你会答吗?花几分钟告诉大家答案吧!
扫描二维码,关注牛客网
下载牛客APP,随时随地刷题
根据二叉树前序遍历和中序遍历的递归算法中递归工作栈的状态变化得出:前序序列和中序序列的关系相当于以前序序列为入栈次序,以中序序列为出栈次序。因为前序序列和中序序列可以唯一地确定一棵二叉树,所以题意相当于“以序列 a,b,c,d 为入栈次序,则出栈序列的个数为?”,对于 n 个不同元素进栈,出栈序列的个数为 =14 。(来自王道论坛)