算法二叉树学习笔记 - 已知结点数计算可构建出多少种二叉树

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

相关知识点

排列组合公式

  1. 排列有序 : 排列相当于排队,ABC站不同的位置,就是不同的排法。
  2. 组合无序 : 组合相当于组队,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个排成一列

  1. n > m
  2. 规定 0! = 1! = 1
  3. 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 个结点之间的最短路径。

算法笔记 二叉树已知后序与中序输出前序[二叉树 前序遍历] HERODING的算法之路

算法题0009 | 求完全二叉树结点个数

算法题17 重建二叉树