今天写数据结构题,有一个比较深刻的,记录在这里,方便日后查看翻阅。

题目:
一个深度为h的满k叉树有如下性质:第h层上的结点都是叶子结点,其余各层上每个结点都有k棵非空子树。如果按层次顺序(同层自左至右)从1开始对全部结点编号,问:
(1)各层的结点数目是多少?
(2)编号为i的结点的双亲结点(若存在)的编号是多少?
(3)编号为i的结点的第j个孩子结点(若存在)的编号是多少?
(4)编号为i的结点的有右兄弟的条件是什么? 其右兄弟的编号是多少?
答:

(1)各层的结点数目是多少?

第一层:11 1
第二层:kk k
第三层:k∗kk*k k∗k
第四层:k∗k∗kk*k*k k∗k∗k
第n层: kn−1k^{ n-1} kn−1

(2)编号为i的结点的双亲结点(若存在)的编号是多少?

我先画了一个满三叉树图,方便思考(并不是这道题就是三叉树,题目给的是满k叉树,我只是为了方便才选择三叉树的)

假设i的位置如上,j是i的第一个子节点。
i 的前面有(i-1)个节点,每一个节点有k 个子节点,
所以j 前面有((i-1)*k)+1 个节点,为什么要加1呢,
因为(i-1)*k 没有包括根节点,
所以j 前面的节点再加一,((i-1)*k)+2 就是j 节点的编号。

((i−1)∗k)+2((i-1)*k)+2 ((i−1)∗k)+2

衍生问题,如果问的是i的第k个孩子的编号怎么办?
第一个孩子(i−1)∗k)+2(i-1)*k)+2 (i−1)∗k)+2
那么第k个孩子 (i−1)∗k)+2+k−1(i-1)*k)+2 + k -1(i−1)∗k)+2+k−1

(3)编号为i的结点的第j个孩子结点(若存在)的编号是多少?

再画一个图,把i和j的位置换一下

这次就是求i 的父节点j 的编号,我只会使用数学的推算方法,联想不出来这个题。
因为i是j子节点,所以可以用j 来求i 的编号,
i=((j−1)∗k)+2i=((j-1)*k)+2 i=((j−1)∗k)+2
i−2=(j−1)∗ki-2=(j-1)*k i−2=(j−1)∗k
(i−2)/k=j−1(i-2)/k=j-1 (i−2)/k=j−1
j=((i−2)/k)+1j=((i-2)/k)+1 j=((i−2)/k)+1

第三题就是通过第二题得到的结果,逆向推理得到的结果,这是目前我会的唯一方法。

(4)编号为i的结点的有右兄弟的条件是什么? 其右兄弟的编号是多少?


图中红色的就是没有右兄弟,除了红色的节点,其他的节点都有右兄弟
通过图片可以发现,只要i 不是每个节点的最右节点,
换个说法,只要i 不是双亲的第k个孩子就有右兄弟
对于任意的节点p ,其k 个子节点的编号是p*k+1
则有:
i!=p∗k+1i!= p*k+1 i!=p∗k+1
i−1!=p∗ki-1 != p*k i−1!=p∗k
最后结果可以写成:
(i−1)%k!=0(i-1)\% k !=0 (i−1)%k!=0
其实就是保证当前节点减一不是k的倍数,就可以保证该节点是有右兄弟的。

这道题我也是在网上看解析看了好久看懂的,但是网上的没有系统的讲解这个问题的,索性我自己总结下来,方便日后自己复习,或者帮助其他人学习这个问题。
希望对你有帮助。

数据结构-满k叉树例题相关推荐

  1. 数据结构—什么叫满K叉树?

    K叉树是指每个父节点最多有K个子节点的树.满K叉树就是除了底层节点以外的每个节点都有K个子节点的树. 来个题体验下: 解析:

  2. 满k叉树编号为 i 的节点的孩子编号公式推导

    结论 满k叉树编号为i的节点第一个孩子的编号 j 满足; 推导过程 设: 节点 i 处在该 m 叉树的第 h层, (h = 1, 2, 3...) 则 前 h - 1 层共有    个节点 同理 前  ...

  3. 满K叉树的叶子节点数有什么特点?

    满 K 叉树中的节点要么是叶子结点,要么有 kkk 个子节点 满 K 叉树的叶子结点数 mmm 满足: (m−1)%(k−1)=0(m-1) \% (k-1) = 0 (m−1)%(k−1)=0 以3 ...

  4. 一个深度为L的满k叉树的性质

    1,各层结点的数目是多少? k^(n-1) 2,编号为n的结点的双亲结点(若存在)的编号是多少? (n-2+k) / k 取下界 3,编号为n的结点的第i个孩子结点 (n-1)k +1 +i 4,编号 ...

  5. k叉树的性质_二叉树的性质总结.doc

    <二叉树的性质总结.doc>由会员分享,提供在线免费全文阅读可下载,此文档格式为doc,更多相关<二叉树的性质总结.doc>文档请在天天文库搜索. 1.一.二叉树的性质性质1 ...

  6. A 完全k叉树(CCPC-Wannafly Comet OJ 夏季欢乐赛(2019))

    题目描述 欢迎报考JWJU!这里有丰富的社团活动,比如为梦想奋斗的ACM集训队,经常组织飞行棋的桌游协会,喜欢"唱,跳,rap,篮球"的篮球协会,更奇特的是--让人耳目一新的攀树协 ...

  7. 完全k叉树(CCPC-Wannafly Comet OJ 夏季欢乐赛(2019) A)

    题目描述 欢迎报考JWJU!这里有丰富的社团活动,比如为梦想奋斗的ACM集训队,经常组织飞行棋的桌游协会,喜欢"唱,跳,rap,篮球"的篮球协会,更奇特的是--让人耳目一新的攀树协 ...

  8. Comet OJ 夏季欢乐赛 完全k叉树

    完全k叉树 https://cometoj.com/contest/59/problem/A?problem_id=2712 题目描述 欢迎报考JWJU!这里有丰富的社团活动,比如为梦想奋斗的ACM集 ...

  9. CCPC-Wannafly Comet OJ 夏季欢乐赛(2019)A——完全k叉树

    题目描述 欢迎报考JWJU!这里有丰富的社团活动,比如为梦想奋斗的ACM集训队,经常组织飞行棋的桌游协会,喜欢"唱,跳,rap,篮球"的篮球协会,更奇特的是--让人耳目一新的攀树协 ...

最新文章

  1. 2018年技术展望--中文版
  2. 【Android】Retrofit 2.0 的使用
  3. python画图代码turtle-介绍下Python里自带的一个有趣画图模块库:Turtle库
  4. 如何接受上级指令_向上级领导汇报工作是经常的,想得赏识,了解如何接受上级的命令...
  5. 【好文收藏】k8s中Pod 无法正常解析域名:部署 DNS 调试工具排查
  6. Redis学习第五课:Redis Set类型及操作
  7. framebuffer驱动详解4——framebuffer驱动分析2(probe函数讲解)
  8. 外设驱动库开发笔记4:AD9833函数发生器驱动
  9. java m2文件放哪里_windows下打开.m2文件夹,没有找到setting.xml
  10. 基于JAVA+SpringMVC+Mybatis+MYSQL的会员管理系统
  11. 没数据也能玩转BERT!无监督语义匹配实战
  12. jQuery学习_具备吸附功能的拖曳框
  13. java outputstrea_java的InputStream和OutputStream的理解【转】
  14. 名词解释——元数据和数据字典
  15. 快手视频批量下载,一个脚本就够了,手把手教你批量下载快手高清视频。
  16. Qt下的综合练习—汽车信息管理系统(一)主界面设计
  17. ArcGIS生态敏感性分析制作(附练习数据下载)
  18. ActiveX:ActiveX控件安装、dllregisterserver的调用失败
  19. Prisma(一)——基础
  20. 应该怎么学大数据?该从哪学起?

热门文章

  1. Axmath符号面板放大
  2. HTTP状态 404 - 未找到
  3. 一篇关于业务可用性探测的纯“干”货,榨出一滴水算我输!
  4. java进行超大zip压缩包解压问题
  5. ajax调用api改表格数据库,【django基础】django接口 异步ajax请求 导出数据库成excel表(包裹前端后端)...
  6. 【CRMEB 标准版】V4.0.31常见问题处理办法 问题修复汇总
  7. typescript是什么_为什么不应该害怕TypeScript
  8. headroom.js使用
  9. mac 上的一些软件
  10. 【转载】前端面试攻略