数据结构-满k叉树例题
今天写数据结构题,有一个比较深刻的,记录在这里,方便日后查看翻阅。
题目:
一个深度为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叉树例题相关推荐
- 数据结构—什么叫满K叉树?
K叉树是指每个父节点最多有K个子节点的树.满K叉树就是除了底层节点以外的每个节点都有K个子节点的树. 来个题体验下: 解析:
- 满k叉树编号为 i 的节点的孩子编号公式推导
结论 满k叉树编号为i的节点第一个孩子的编号 j 满足; 推导过程 设: 节点 i 处在该 m 叉树的第 h层, (h = 1, 2, 3...) 则 前 h - 1 层共有 个节点 同理 前 ...
- 满K叉树的叶子节点数有什么特点?
满 K 叉树中的节点要么是叶子结点,要么有 kkk 个子节点 满 K 叉树的叶子结点数 mmm 满足: (m−1)%(k−1)=0(m-1) \% (k-1) = 0 (m−1)%(k−1)=0 以3 ...
- 一个深度为L的满k叉树的性质
1,各层结点的数目是多少? k^(n-1) 2,编号为n的结点的双亲结点(若存在)的编号是多少? (n-2+k) / k 取下界 3,编号为n的结点的第i个孩子结点 (n-1)k +1 +i 4,编号 ...
- k叉树的性质_二叉树的性质总结.doc
<二叉树的性质总结.doc>由会员分享,提供在线免费全文阅读可下载,此文档格式为doc,更多相关<二叉树的性质总结.doc>文档请在天天文库搜索. 1.一.二叉树的性质性质1 ...
- A 完全k叉树(CCPC-Wannafly Comet OJ 夏季欢乐赛(2019))
题目描述 欢迎报考JWJU!这里有丰富的社团活动,比如为梦想奋斗的ACM集训队,经常组织飞行棋的桌游协会,喜欢"唱,跳,rap,篮球"的篮球协会,更奇特的是--让人耳目一新的攀树协 ...
- 完全k叉树(CCPC-Wannafly Comet OJ 夏季欢乐赛(2019) A)
题目描述 欢迎报考JWJU!这里有丰富的社团活动,比如为梦想奋斗的ACM集训队,经常组织飞行棋的桌游协会,喜欢"唱,跳,rap,篮球"的篮球协会,更奇特的是--让人耳目一新的攀树协 ...
- Comet OJ 夏季欢乐赛 完全k叉树
完全k叉树 https://cometoj.com/contest/59/problem/A?problem_id=2712 题目描述 欢迎报考JWJU!这里有丰富的社团活动,比如为梦想奋斗的ACM集 ...
- CCPC-Wannafly Comet OJ 夏季欢乐赛(2019)A——完全k叉树
题目描述 欢迎报考JWJU!这里有丰富的社团活动,比如为梦想奋斗的ACM集训队,经常组织飞行棋的桌游协会,喜欢"唱,跳,rap,篮球"的篮球协会,更奇特的是--让人耳目一新的攀树协 ...
最新文章
- 2018年技术展望--中文版
- 【Android】Retrofit 2.0 的使用
- python画图代码turtle-介绍下Python里自带的一个有趣画图模块库:Turtle库
- 如何接受上级指令_向上级领导汇报工作是经常的,想得赏识,了解如何接受上级的命令...
- 【好文收藏】k8s中Pod 无法正常解析域名:部署 DNS 调试工具排查
- Redis学习第五课:Redis Set类型及操作
- framebuffer驱动详解4——framebuffer驱动分析2(probe函数讲解)
- 外设驱动库开发笔记4:AD9833函数发生器驱动
- java m2文件放哪里_windows下打开.m2文件夹,没有找到setting.xml
- 基于JAVA+SpringMVC+Mybatis+MYSQL的会员管理系统
- 没数据也能玩转BERT!无监督语义匹配实战
- jQuery学习_具备吸附功能的拖曳框
- java outputstrea_java的InputStream和OutputStream的理解【转】
- 名词解释——元数据和数据字典
- 快手视频批量下载,一个脚本就够了,手把手教你批量下载快手高清视频。
- Qt下的综合练习—汽车信息管理系统(一)主界面设计
- ArcGIS生态敏感性分析制作(附练习数据下载)
- ActiveX:ActiveX控件安装、dllregisterserver的调用失败
- Prisma(一)——基础
- 应该怎么学大数据?该从哪学起?
热门文章
- Axmath符号面板放大
- HTTP状态 404 - 未找到
- 一篇关于业务可用性探测的纯“干”货,榨出一滴水算我输!
- java进行超大zip压缩包解压问题
- ajax调用api改表格数据库,【django基础】django接口 异步ajax请求 导出数据库成excel表(包裹前端后端)...
- 【CRMEB 标准版】V4.0.31常见问题处理办法 问题修复汇总
- typescript是什么_为什么不应该害怕TypeScript
- headroom.js使用
- mac 上的一些软件
- 【转载】前端面试攻略