范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

C语言数据结构什么是树?什么是二叉树?

  在二叉树之前的数据结构学习中,我们学习了顺序表、链表、栈、队列这几种结构,它们都是用链表或者数组的方式来实现的,主要考察我们对结构体的运用!
  今天让我们来学习一个新的数据结构,也就是下面这副图里面的树
  啊不好意思,图拿错了!????
  是下面这个才对
  1.什么是树?1.1树的概念
  树是一种非线性的数据结构,它是由n个有限节点组成的具有一定层次关系的集合。
  把它叫做树是因为它看起来的确像一个树的根部
  当然也可以理解为是树干在上,树叶在下的结构
  有一个特殊的节点,被称为根节点,也就是树的开头
  除了根节点外,其余节点都是,个互不相交的集合。每一个集合都是一颗与树的结构类似的子树
  每一个节点只能有一个前驱,但是可以有很多个后驱
  因此,树是递归定义的
  树中的子节点不能有交集
  上图中的B节点不能有G这个孩子,因为G已经有父母C了
  同理,G节点也不能同时拥有两对父母
  子节点之间也不能相连,如E和F不能相连 1.2树的相关知识点
  节点的度:一个节点含有的子树的个数称为该节点的度; 如下图:A的度为6
  叶节点或终端节点:度为0的节点称为叶节点; 图中B、C、H、I…等节点为叶节点
  非终端节点或分支节点:度不为0的节点; 如上图中D、E、F、G…等节点为分支节点
  简单的说,就是有娃的节点就是分支节点
  双亲节点或父节点:若一个节点含有子节点,则这个节点称为其子节点的父节点; 如上图,D是H的父节点
  孩子节点或子节点:一个节点含有的子树的根节点称为该节点的子节点; 如上图:H是D的孩子节点
  兄弟节点:具有相同父节点的节点互称为兄弟节点; 如下图:P、Q是兄弟节点
  树的度:一棵树中,最大的节点的度称为树的度; 示例中树的度为6(即A的度)
  节点的层次:从根开始定义起,根为第1层,根的子节点为第2层,以此类推
  树的高度或深度:树中节点的最大层次; 示例中树的高度为4
  堂兄弟节点:双亲在同一层的节点互为堂兄弟;如下图:H、I互为兄弟节点
  节点的祖先:从根到该节点所经分支上的所有节点;示例中A是所有节点的祖先
  子孙:以某节点为根的子树中任一节点都称为该节点的子孙。示例中所有节点都是A的子孙
  森林:由m(m>0)棵互不相交的树的集合称为森林
  多个不相交的树就是森林
  1.3树的代码表示
  表示树的方式有很多种,比如下面这种 #define N 5 //指定树的度为5 struct TreeNode {   int data;   struct TreeNode* subs[N];//用指针数组存放孩子节点的指针 };
  但这种方法不够优,给大家展示一个用的最广泛的方法——孩子兄弟表示法 typedef int DataType; struct Node {  struct Node* _firstChild1; // 第一个孩子结点  struct Node* _pNextBrother; // 指向其下一个兄弟结点  DataType _data; // 结点中的数据域 };
  通过这种方法,父亲节点只需要保存它的第一个娃,其他娃就让大娃的兄弟节点来找
  也就是家长只用管老大,老大管老二,老二管老三,依次往下……
  实际写代码的结构大概是下图这样
  2.二叉树
  在实际中,二叉树是使用较多的一种树的结构 2.1概念
  二叉树是度为2的树,它是一个特殊的树
  二叉树不存在度大于2的节点
  二叉树是有序树,它的娃(子树)有左右之分,次序不能颠倒
  所以,二叉树都是由下面各类节点组成的树
  2.2特殊的二叉树
  满二叉树:如果每一个层的节点数都达到最大值,那这个二叉树就是满二叉树。也就是说:满二叉树的层数为k,且节点总数是2k-1
  满二叉树的节点数是一个等比数列公式
  2 0 + 2 1 + 2 2 + . . . + 2 k   1 = 1   ( 1   2 k ) / ( 1   2 ) = 2 k   1 2^0+2^1+2^2+...+2^{k-1}=1*(1-2^k)/(1-2)=2^k -1 20+21+22+...+2k 1=1 (1 2k)/(1 2)=2k 1
  完全二叉树:完全二叉树是效率很高的数据结构。对于深度为K,有n个节点的二叉树,当且仅当每一个节点都与深度为K的满二叉树中编号从1至n的节点一一对应时,称为完全二叉树。
  简单说来,完全二叉树的最后一层不一定满,但必须要从左到右连续
  满二叉树是一个特殊的完全二叉树 2.3二叉树的性质
  若规定根节点的层数为1,则一棵非空二叉树的第i层上最多有 2(i-1) 个结点
  若规定根节点的层数为1,则深度为h的二叉树的最大结点数是 2h-1
  对任何一棵二叉树, 如果度为0其叶结点个数为n0, 度为2的分支结点个数为n2,则有 n0 = n2+1
  若规定根节点的层数为1,具有n个结点的满二叉树的深度, h=log2(n+1)  。 (ps: 是log以2为底,n+1为对数)
  对于具有n个结点的完全二叉树,如果按照从上至下从左至右的数组顺序对所有节点从0开始编号,则对于序号为i的结点有:
  若 i>0 ,i位置节点的双亲序号: (i-1)/2 ;i=0,i为根节点编号,无双亲节点
  若 2i+1=n否则无左孩子
  若 2i+2=n否则无右孩子
  2.4几个选择题
  1. 某二叉树共有 399 个结点,其中有 199 个度为 2 的结点,则该二叉树中的叶子结点数为( )
  A 不存在这样的二叉树
  B 200
  C 198
  D 199
  //叶子节点的数量 总比度为2的节点多1
  2.在具有 2n 个结点的完全二叉树中,叶子结点个数为( )
  A n
  B n+1
  C n-1
  D n/2
  //N0+N1+N2=2n
  //2N0+N1-1=2n
  //N1只有0和1两种可能,因为n为整数,2n为偶数,所以2N0=2n,N0=n
  3.一棵完全二叉树的节点数位为531个,那么这棵树的高度为( )
  A 11
  B 10
  C 8
  D 12
  //假设高度是h
  //完全二叉树节点最多2^h -1
  // 最少2^(h-1)-1 +1
  //可以通过这两个公式,推断出h=10
  3.二叉树的存储结构
  二叉树一般可以使用两种结构存储,一种顺序结构,一种链式结构 3.1顺序存储
  顺序结构存储就是使用数组来存储
  一般使用数组只适合表示完全二叉树,因为不是完全二叉树会有空间的浪费。
  现实使用中只有堆才会使用数组来存储
  下一篇博客会带大家认识 堆 这个特殊的树形结构(和内存里面那个堆????没啥关系哈)
  看到这张图,你肯定想问,如果用数组结构存储,那还怎么还原出一颗树????呢?
  这里我们需要理解物理存储和逻辑结构的关系
  二叉树顺序存储在物理上是一个数组,在逻辑上是一颗二叉树
  那怎么计算这种情况下的父亲和娃呢?
  leftchild=parent*2+1
  rightchild=parent*2+2
  parent=(child-1)/2
  怎么样,是不是忽然感觉妙级了?
  3.2链式存储
  这就就没啥好说的啦,使用一个简单的二叉链就能构成二叉树 typedef int BTDataType; // 二叉链 struct BinaryTreeNode {   struct BinTreeNode* _pLeft; // 指向当前节点左孩子   struct BinTreeNode* _pRight; // 指向当前节点右孩子   BTDataType _data; // 当前节点的值 }结语
  嘿嘿嘿,本篇博客到这里就结束啦!
  -----------------------------------
  著作权归作者所有:来自51CTO博客作者慕雪年华的原创作品,原文链接:https://blog.51cto.com/u_15307009/5202047,侵删
  写在最后:另外,对于准备学习C/C++编程的小伙伴,如果你想更好的提升你的编程核心能力(内功)不妨从现在开始!
  编程学习书籍分享:
  编程学习视频分享:
  整理分享(多年学习的源码、项目实战视频、项目笔记,基础入门教程)
  欢迎转行和学习编程的伙伴,利用更多的资料学习成长比自己琢磨更快哦!
  对于C/C++感兴趣可以关注小编在后台私信我:【编程交流】一起来学习哦!可以领取一些C/C++的项目学习视频资料哦!已经设置好了关键词自动回复,自动领取就好了!

千元以下手机哪款最值得购买我只推荐这三款每一款性价比都超高今年的新机发布也告一段落了,现在的新机价格也是水涨船高,价格越来越贵,千元以下的新机也越来越少,不知道有没有你心仪的手机,如果你的预算很低,今年发布的新机也满足不了你,那么今天我只夏普发布zero6sense6手机,号称市面最轻薄的5G手机今日,夏普在日本发布了AQUOSzero6手机,仅重146g,是目前世界最轻的5G手机。AQUOSzero6再次回归轻薄设计,配备6。4英寸OLED显示屏,23401080分辨率,全新尼克尔Z40mmf2镜头表现出众连获多家海外媒体高度评价9月14日,尼康全新发布Z卡口系统定焦镜头尼克尔Z40mmf2。镜头自发布以来引起业界广泛关注,凭借小巧轻便的外形及强大的影像功能获得包括数码相机世界(DigitalCameraWIPHONE13新品发布爆款了,为什么许多人还在用钉子户6S呢?众所周知,今年9月分,苹果公司一年一度的新品发布会上IPHONE13隆重登场了。13一出,几天后手机终端市场反应火爆,尤其是IPHONE13PRO和MAX两款终端加入了万众瞩目的1苹果离开欧菲光,摄影起黑块苹果手机虽是外国品牌,但是在中国生产,代工!也创造了好多就业岗位,苹果,从1代,二代,三,四代因功能好用被人们追捧,曾有位大学生,割肾被苹果4代。因此而红!但由于美国政府,为保护自硬盘开启PCIe5。0时代2019年年初,PCISIG组织对外发布PCIe5。00。9版规范。随后,2019年5月29日,PCISIG正式宣布完成PCIe5。0规范,传输速率达到32GTs,带宽可达128G苹果回应iPadmini6果冻屏问题属于LCD屏幕正常现象财经网科技9月29日讯,据科创板日报消息,近日苹果今年的iPadmini6在竖屏状态下存在明显果冻屏问题竖屏状态上下拖动屏幕时,屏幕从右至左存在明显位移不同步的现象。此前苹果客服对麒麟5G芯片用完了?曝华为Mate50首发骁龙8984G,明年Q1登场在热闹的旗舰市场,华为因为进入了m国的黑名单,旗下自研芯片紧缺导致了各种机型难产,甚至变卖了子品牌荣耀。今年也终于在7月份发布了旗舰P50系列,但由于芯片的原因,该系列在5G时代被比亚迪DiLink4。0(5G)车机体验,上车真没手机什么事了对于如今的汽车消费者来说,由于智能手机带来的网联生活已经深入人心,所以对于车机系统的要求也开始日益提升。当下判断一个车机系统好不好用,最直观的感觉就是上车能不能不再拿起手机。在此前华为再进击任正非开启两场会战,这才是大招?来源中国经济周刊经济网中国经济周刊记者孙冰北京报道华为未来会打造两个操作系统,一个是鸿蒙(HarmonyOS),一个是欧拉(EulerOS),两者都开源。鸿蒙操作系统的应用场景是智小米最窄下巴手机,由奥运冠军杨倩代言,配置售价完整曝光在东京奥运会女子10米气步枪决赛上,来自浙江的00后女将杨倩夺下了该项目冠军,为我国揽入了本届奥运会的第一枚金牌,杨倩也因此名声大噪,站在了光环荣耀之下!现在,这位优秀的运动员已经
vivoY32正式发布骁龙6805000mAh电池,1399元IT之家12月18日消息,vivoY32现已登陆vivo官网,搭载骁龙680处理器,内置5000mAh电池,8GB128GB售价1399元,目前尚未正式开售。设计方面,vivoY3京东金融可靠吗?京东金融非常可靠!首先来看一下京东金融的介绍!京东金融集团创立于京东集团内部,于2013年10月开始独立运营,定位一家数字科技公司。公司以大数据人工智能物联网区块链等时代前沿技术为人工智能热为何在中职遇冷?刍议中职开设人工智能专业的误区人工智能并不是一门独立的学科,仅是计算机科学学科应用技术中的一个分支(根据美国教授内尔黛尔,约翰路易斯所著的计算机科学概论和美国教授贝赫鲁兹佛罗赞所著的计算机科学导论观点),但人工大家服吗?vivoX70Pro成年度最佳影像旗舰伴随着年关的临近各大平台已经开始对2021年进行回顾评比。这个在智能手机行业非常的流行,每年这个时候各大平台包括媒体都会评选出自己心目中的最佳。今天我们给大家解析的是新浪财经新浪科12。20号新能源车光伏半导体券商5g等板块与周一大盘的具体分析多领域学习,顺势而为!给你小心心走势预测从上周五走势上来看,主要受到了外围市场的影响以及对假北水的一个承压短期已经释放了较多的压力,形成了一个高开低走的趋势为主。从60分钟级别上来34家中企被拉入清单,任正非果然有远见在美国实施芯片禁令之初,比尔盖茨这些大佬就发出警告不卖给中国芯片只会加速他们实现自给自足的步伐,最终受到损失的只会是以出口为主的美半导体市场。而事实也的确如此,国内市场制定了202golangciline工具介绍在ci过程中,经常有一些可以通过静态分析或者白盒检测去避免一些问题以及规范代码格式!使用Go语言一般是使用golangciline作为代码检测工具!1安装参考官网httpsgola小米开始发力外观设计,这两款机型让你爱上它小米手机10年走来,外观设计一直不是他主攻的方向,硬件才是他的主力军,但是这半年来小米在设计上下足了功夫,诚意满满,今天我们就特别要说的两款机型就是小米11青春活力板和小米Civi起售不到20万!一汽大众ID。4CROZZ值不值作为走在风口浪尖的新能源车型,在疫情之下的2020年还是取得了不错的成绩,自主品牌以及造车新势力品牌可以说表现抢眼,不过随着特斯拉国产车型价格的下放以及合资品牌的入局,这一市场势必iPhone13mini值得购买吗?用了iPhone13mini的体验来说,这部手机还算完美吧。如果非说有什么缺点的话,那就是摄像头,苹果把摄像头搞那么大干什么,你就弄一个单摄做的和背板水平不就得了。真的,好的摄像模为什么有人宁愿溢价买华为,也不考虑性价比高的小米?三点原因今天来聊聊为什么有人宁愿溢价买华为,也不考虑性价比高的小米?首先,性价比并不是单一的便宜,而是好且便宜。而一直以来小米做得更多的是便宜而不是性价比。比如小米的家电,第一年好用,第二