2018-12-05

今天考研的同学让我帮她看一道数据结构问题,题目是这样的:

由23、12、45、36构成的二叉排序树有几个() ,其中AVL树又有几个()?
A. 13, 4;
B. 13, 5;
C. 14, 5;
D. 14, 4;
答案: D

看到这题的第一反应是,首先将序列排序为 :12、23、36、45,然后用枚举法。
当然答案也是这么给的。

A_4^4 种情况, 枚举的时候发现12 和 45 开头的AVL树不可能存在,因此只要枚举23 和 36 开头的情况,排除相同的树即可。枚举完发现分别有2个AVL树,因此第二个空为4。

但是仔细想想,二叉树是可以反转的。也就是说,其实12 开头(最小值)的树,将树的左右子树交换一下,她的结构就和45开头(最大值)的树一模一样!对于23 和 36 开头的树也是如此(因为对于23来说,有1个数比他小,2个数比他大;对于36来说,有1个树比它大,有2个数比他小。对于树的结构来说,就会是左右子树交换的问题了)!因此对于一个偶数序列,答案必定两个空都为偶数

因此只要给出2k位(哪怕有1000000个数)的偶数序列,只要他出答案方式不变,则不用不用不用任何计算、画图、枚举!!!直接选两个数都为偶数的答案!!!! 就算出答案方式改变,那也可以少计算一半!!!!!!!

若给出2k+1奇数序列,则只需计算最中间那个树的方案即可。

这题最难的还可以这么出:

给你 2k+1 个数,构成的二叉排序树有___个 ,其中AVL树又有 ___个?

来,大家一起来填空!有了上面的思路,我相信再递归递归,找找规律这题就有解了。只要有高中扎实的数学功底,以及对二叉树本质的了解,这题一定能作对!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Dear: ° 徐和 非鸟飞鱼 在WeChat上的聊天記錄如下,請查收。 ————— 2018-12-05 ———...
    leaeetoer阅读 1,410评论 0 0
  • 2018-12-5 姓名:张文清 公司:宁波大发化纤有限公司天】 【知~学习】 《六项精进》大纲背诵1)遍 通篇朗...
    z张文清阅读 1,365评论 0 0
  • 参加了永澄老师的年目标制定活动,梳理一下2018年令自己有成就感的事件。 工作 1 起草了合同管理制度 2 7月目...
    曹燕妮阅读 1,332评论 0 0
  • 11梯子 视觉黄色的两个铁支架 感觉牢固,稳定 12椅子 视觉后背圆弧设计 感觉放松,还能摇啊 13医生 视觉可信...
    樱桃_5d99阅读 689评论 0 0
  • 很快就要2018年了,在这新旧交替的时候,每次都听到很多感慨:“太快了,一年又过去了”、“年初的目标又没有达成”、...
    胡文斌V阅读 1,222评论 0 0