六个问题搞懂数据结构中的树的分支
几个问题:树按如下编号
1.寻找父节点:一个完全k叉树,如果一个节点的编号是i,求它的父节点的编号(如果有父节点的话)
先来看答案 如果是一个结点的孩子结点中的最大结点,那么最大节点编号减去根节点编号除以分支度数就是组数
这个问题搞明白后有利于对树的进一步认知,就拿这个图来说吧,
(图源https://img2020.cnblogs.com/blog/1751378/202005/1751378-20200505121616181-675919960.png)
编号5,5-1 /2=2,这就是父节点的编号了。这是怎么个原理?
减去根结点,然后剩下的就是k的整数倍了。当减去后的结点编号为k的时候,整数倍是1,这就是根结点延申出来的k个结点,因而父节点编号为1
然后,2k呢,第一个根结点延申出来k个,然后第二个结点延申出来k个,所以2k就是编号2的组别,那么一切就都可以解释了。
树就是前置结点不断延伸出后置结点的过程,所以说,第一个结点延申出了k个结点,[2,k+1]就是第一个结点延伸出来的结点,然后这组结点继续延申 2延伸出了[k+2,2k+1],3延伸出了[2k+2,3k+1],依次类推,如果是第Q个父节点,它延申出的组就是[(Q-1)*K+2,Q*K+1]
为了清晰可见和美观,我们把它画成了一棵树的结构。
回到问题原点 父节点的编号是啥, 如果最右边的孩子,就是 i-1/k 如果是最左边的孩子,那么就是 i+(k-1)-1/k 不难推到,这玩意都是在同一个整数范围内的,那就向下取整即可。
那么同样的,我们来看第二个问题
2.编号为P的结点的第i个孩子的编号是什么(如果有孩子)
那么 很显然 同样的,编号p前面的所有前置结点都已经延伸完毕,所以此刻共有结点k(p-1)+1个,那么如果i是第k个孩子,那么编号就是kp+1了,不是的话,那就k(p-1)+1+i了
3.编号为p的结点有右兄弟的条件是什么,其右兄弟的编号是什么?
理解了上面所说了,下面这些题都易如反掌了,很简单,不是最右孩子即可,就是说 p-1/k不是整数即可,编号就是p+1.
4.一棵度为k的树中有n1个度为1的结点,n2个度为2的结点,...,nk的度为k的结点,问该树中有多少个叶子结点。
根据树的定义,除了根结点,每个结点都只有一个前驱结点,每个节点与指向它的分支一一对应,所以除了树根结点之外的所有结点数等于所有结点的分支数,即度数。那么这也就是说,树的结点数等于所有结点的度数+1,总结点数为
N1+2n2+3n3+4n4+knk+1;那么叶子节点是啥呢。
度为0的结点数就是叶子结点的数目。所以就是总结点数减去所有度不为0的结点数的综合所以再减去n1,n2,n3,n4,...,nk。
重点概念就是 :结点数等于分支数+1.
5.n个结点的树中,只有度为K的分支结点和度为0的叶子结点。求该树含有的叶子节点数目。
除了树根结点之外的所有结点数等于所有结点的分支数,即度数。那么这也就是说,树的结点数等于所有结点的度数+1.
N=1+kNk。
如此就得出 n-1/k=Nk,那么叶子结点就是结点总数减去度为K的分支结点数。
6.n个结点的k叉树,能达到的最大深度和最小深度。
最大深度,单支树,深度n
最小深度,满k叉树,深度为 logk(n(k-1)+1)
知识瀚若烟海,学习知识的乐趣在于分享,让我们一起在代码路上越走越远吧
六个问题搞懂数据结构中的树的分支相关推荐
- 二叉搜索树的删除操作可以交换吗_一文看懂数据结构中的树
通常在开始学编程的时候,你会接触一些常用数据结构.到最后一般会学到哈希表.对于修读计算机科学学位的朋友,你通常要上专门的数据结构课,从了解有关链表.队列和栈的各种知识.这些统称为线性数据结构,因为依逻 ...
- 一篇文章学懂数据结构中的树
1.树知识体系搭建 2.树的基础知识 2.1 关于树结构 树形结构是非常重要的非线性结构,是以分支关系定义的一对多的层次结构. 树是n(n≥0)个结点的有限集.当n=0时,称为空树.在任意一棵非空树中 ...
- 【译】数据结构中关于树的一切(java版)
你每天都那么努力,忍受了那么多的寂寞和痛苦.可我也没见你有多优秀. https://user-gold-cdn.xitu.io/2018/4/17/162d1b4c1dd95fa3?w=1080&am ...
- mysql 什么树_搞懂MySQL InnoDB B+树索引
一.InnoDB索引 InnoDB支持以下几种索引: B+树索引 全文索引 哈希索引 本文将着重介绍B+树索引.其他两个全文索引和哈希索引只是做简单介绍一笔带过. 哈希索引是自适应的,也就是说这个不能 ...
- 一文搞懂数据治理、数据仓库、大数据平台、数据中台、报表BI体系等概念
今天要给大家送一份极好的东西. 第一次看到这份<数据化建设知识图谱>时确实被惊艳到了,内容之详细,质量之高,强烈建议做IT.做数据相关工作的粉丝朋友们搞上一份. 一张超大的实物图谱 这次特 ...
- 一文弄懂数据结构中的红黑树、二叉树
前言 红黑树 在讲红黑树之前,我们需要先了解几种树:二叉树,二叉查找树以及平衡二叉树. 二叉树 最多有 2 个孩子的树称为二叉树.由于二叉树中的每个元素只能有 2 个孩子,我们通常将它们命名为左孩子和 ...
- 一文搞懂数据质量怎么做,很接地气!
作者:何永灿 来源:网络 编辑:数据一哥 全文共9017个字,建议阅读20分钟 01 数据质量保障原则 如何评估数据质量的好坏,业界有不同的标准,阿里主要从 4 个方面进行评估:完整性.准确性.一致性 ...
- 一文搞懂数据治理方法论
1.什么是数据治理 数据治理是对数据资产的管理行使权力和控制的活劢集合(规划.监控和执行).数据治理职能指导其他数据管理职能如何执行. 2.开展数据治理的背景和价值 2.1 背景 –企业数据仓库/BI ...
- 一文搞懂数据在内存中的存储
数据类型 整型在内存中的存储 大小端字节序 浮点型在内存中的存储 数据类型 整型家族 char unsigned char signed char; short ...
最新文章
- 服务发现:Zookeeper vs etcd vs Consul
- 肝!十大 Python 机器学习库
- [深度学习] 自然语言处理 --- Self-Attention(二) 动画与代码演示
- Hadoop的安装与配置——设置单节点群集
- kafka分区与分组原理_大数据技术-Kafka入门
- PyCharm取消启动时自动加载项目
- c语言指针慕课,C语言-指针
- 一个表可以建几个索引_一个人失业在家,可以做哪些挣钱的小生意?推荐几个供参考...
- c语言数组未定义的会默认为什么,C语言之数组
- 银行简历计算机等级填错了,填错这几点,银行实习简历通过率几乎为0!
- Python爬虫实战之抓取猫眼电影
- 台式计算机无线接入,台式计算机有线连接路由器WiFi方法图步骤,可以详细设置无线内容(...
- 韩寒:给李彦宏先生的一封信
- 黑帽SEO网站优化常用的14种技巧
- OPEN3D(python)学习笔记-1.3 法线估计
- iOS中物理单位换算
- c语言fopen错误指针,fopen出错的原因
- 10分钟pandas教程
- vue3 如何给动态渲染的组件添加ref
- 「凹凸数据」历史文章合集,更新中