算法二叉树学习笔记 - 已知结点数计算可构建出多少种二叉树
Posted 笑虾
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了算法二叉树学习笔记 - 已知结点数计算可构建出多少种二叉树相关的知识,希望对你有一定的参考价值。
算法【二叉树】学习笔记 - 已知结点数计算可构建出多少种二叉树
题目:已知3个结点可以构造出5种不同的二叉树,那么4个结点可以构造出多少种不同的二叉树?
卡特兰数
公式:C(2n, n) - C(2n, n-1)
代入:C(2*4, 4) - C(2*4, 4-1)
= C(8, 4) - C(8, 3)
= 8*7*6*5 / 4! - 8*7*6 / 3!
= 8*7*6*5 / 1*2*3*4 - 8*7*6 / 1*2*3
= 1680 / 24 - 336 / 6
or (7*2*5 / 1) - (8*7 / 1)
= 70 - 56
= 14
相关知识点
排列组合公式
- 排列有序 : 排列相当于排队,ABC站不同的位置,就是不同的排法。
- 组合无序 : 组合相当于组队,ABC组一队,BCA组一队,都是他们三个,是同一只队伍。
公式 | =分解 | 说明 |
---|---|---|
A(n, m) | n! / (n-m)! | 从n 个不相同元素中取出m 个进行排列(要考虑顺序)。 |
C(n, m) | A(n, m) / A(m, m) | 从n 个不同元素中取出m 个进行组合(不考虑顺序)。 |
排列 Arrangement
A(n, m) = n! / (n-m)!
从n个不相同元素中取出m个排成一列
- n > m
- 规定
0! = 1! = 1
A(n, m)
如果n = m
,则n-m = 0
因为0! = 1
,所以可简化为n!
组合 Combination
A(n, m)
算出完整的排列有多少种。
A(m, m)
表示每个组合内部可以有多少种排序,无论有多少种,都只能算一种。
所以 A(n, m) / A(m, m)
就得出了组合的种类。
分步计算
C(n, m)
= n! / (n-m)! / m!
例:C(5, 3)
= 5! / (5-3)! / 3!
= 5! / 2! / 3!
= 5*4*3*2*1 / 1*2 / 1*2*3
= 5*4* / 1*2
一三项约分
= 20 / 2
= 10
简化
例:C(5, 3)
= 5! / (5-3)! / 3!
= 5! / 2! / 3!
= 5*4*3 / 3!
从题目可直接得出此式。因为 m = 3
分子就保留前3次(剩下的 2 * 1
正好和 2!
约掉了)
= 60 / 6
= 10
参考资料
【又快又准作对考研真题】由3个节点可以构出多少种不同的二叉树。含有4 个结点的二叉树有()种树型
5分钟学会排列组合公式
【高中数学】排列组合超详细讲解
以上是关于算法二叉树学习笔记 - 已知结点数计算可构建出多少种二叉树的主要内容,如果未能解决你的问题,请参考以下文章
构造一棵二叉树,并分别输出其先序遍历、中序遍历和后序遍历的结果
设计一个算法,计算出给定二叉树中任意2 个结点之间的最短路径。