并不正经的前言

以前我这个小白看OI的书,老觉得有些东西很高端(看不懂的自然就很高端【滑稽】):什么啊,位运算啊,二叉树啊。有些东西我学了之后也很迷糊(真的不是因为傻?),做题的时候总是可以把自己搞懵,更甚有题解也看不懂……为了让众多和我一样的小白了解高端的东西,于是就有了c++:论如何成功把自己搞懵这个系列。

bb了这么多废话 开始吧


什么是二叉树

  什么是树

    是一种非线性的数据结构,能很好地描述有分支和层次特性的数据集合。

    about 树

      

      如上图,我们把红色的点称作结点(node),把最上方的结点叫做根结点,根结点下方的两个结构,我们称之为左子树右子树(也可称为左孩子右孩子)。我们把一个结点拥有的子树个数成为,度为0的结点我们称为叶结点。我们把一棵树中所有结点层次的最大值叫做深度。如图的二叉树深度为4

    什么是二叉树

    二叉树是一种特殊的树——即度为二的树

二叉树的结点计算公式

  在一个二叉树的第i层上,最多有2^(i-1)个结点。

  深度为k的二叉树至多有(2^k)+1个结点。

二叉树的遍历

  现在,请想象您正身处某二叉树的某一结点。想要知道这个二叉树的全貌,您必须遍历这个二叉树:一个个走遍这个二叉树的每一个结点,我们称之为遍历。有三种遍历方式:先序遍历,中序遍历,后序遍历。下面一图可以为您展示:

二叉树的前序遍历


代码实现二叉树

c++:论如何成功把自己搞懵【二叉树特辑①】(不定期更新)的更多相关文章

  1. 面试阿里被分布式“搞懵”,Redis、MongoDB、memcached没答上来

    都说大厂面试难,一点也没有错,一线大厂的面试究竟怎么样还得自己亲身经历了才知道.小白面试阿里,就被面试官吊打,一问分布式就被“搞懵”了,Redis.MongoDB.Memcached都没答好,很多没有 ...

  2. python一招完美搞定Chromedriver的自动更新

    日常的web自动化过程中,我们常常用python selenium库来操纵Chrome浏览器实现网页的自动化.这其中有个比较头疼的问题:Chrome的更新频率非常频繁,与之对应的Chromedrive ...

  3. 【java 数据结构】还不会二叉树?一篇搞定二叉树

    二叉树是我们常见的数据结构之一,在学习二叉树之前我们需要知道什么是树,什么是二叉树,本篇主要讲述了二叉树,以及二叉树的遍历. 你能get到的知识点? 1.树的介绍 2.二叉树的介绍 3.二叉树遍历的四 ...

  4. gcc8.2安装__(沒有成功)

    重要:https://gcc.gnu.org/install/prerequisites.html   官方安装所需要的工具文档 还有就是这篇文章 http://blog.51cto.com/2716 ...

  5. 教你在windows10环境下如何安装minepy并成功运行!

    在学习使用sklearn做单机特征工程这篇文章时,发现在计算互信息时from minepy import MINE代码运行出错ModuleNotFoundError: No module named ...

  6. 搞Jedis案例出现问题,有大佬帮我看看怎么解决吗?先感谢大佬点进来看了---Day31

    今天学了Jedis的相关内容,然后做了一个案例,但是出现了错误,然后我百度了一晚上没有解决,想到看看发个博客能不能有大佬帮我看一下问题出现在哪里,百度了一晚上有点懵逼.求大佬帮我解决,在这小弟我先万分 ...

  7. 被面试官问懵:TCP 四次挥手收到乱序的 FIN 包会如何处理?

    摘要:收到个读者的问题,他在面试的时候,被搞懵了,因为面试官问了他这么一个网络问题. 本文分享自华为云社区<TCP 四次挥手收到乱序的 FIN 包会如何处理?>,作者:小林coding . ...

  8. 2016 windows安装phing:安装成功

    21:39 2016/7/212016 windows安装phing:安装成功注意:出现错误时就去更新pear:参见:http://www.cnblogs.com/pinnasky/archive/2 ...

  9. thinkphp判断更新是否成功

    如何判断一个更新操作是否成功 $Model = D('Blog'); $data['id'] = 10; $data['name'] = 'update name'; $result = $Model ...

随机推荐

  1. MySQL数据分析-(9)库操作补充:用户管理和权限管理

    大家好,我是jacky,很高兴继续跟大家学习MySQL数据分析实战,本节课的主题是用户管理和权限管理: 在分享之前,jacky在不厌其烦的强调一下:学习任何一门学科和技能,最重要的是捋清逻辑,我们要知 ...

  2. ubuntu14.04重启网卡的三种方法

    Linux重启网卡的三种方法: 一.network 利用root帐户 # service network restart 或者/etc/init.d/networking restart 二.ifdo ...

  3. java/servlet/jsp 中String与int相互转换

    String ---> int //方式一:Integer(String s) //demo: Integer i = int a = i.intValue() //方式二:static int ...

  4. CentOS7.4中配置jdk环境

    参考:https://www.linuxidc.com/Linux/2016-09/135556.htm 1.下载jdk 首先创建安装包放置位置 mkdir -p /usr/local/java 然后 ...

  5. Linux设备驱动程序 之 软中断

    软中断保留给系统中对时间要求严格以及最重要的下半部使用:目前,只有两个子系统(网络和SCSI)直接使用软中断:此外,内核定时器和tasklet都是建立在软中断上的:在使用软中断之前,要先确定为什么不能 ...

  6. electron之打包成安装程序

    1.安装electron-winstaller npm install --save-dev electron-winstaller 2.创建一个build.js var electronInstal ...

  7. arcgis python 参数验证

    import arcpy class ToolValidator(object): """Class for validating a tool's parameter ...

  8. 路由传值及获取参数,路由跳转,路由检测,this.$route.query和this.$route.params接收参数,HttpGet请求拼接url参数

    配置动态路由参数id: routes: [ // 动态路径参数 以冒号开头 { path: '/user/:id', component: User } ] html路由跳转: <router- ...

  9. 什么是DNS?

    什么是DNS域名系统(DNS)是因特网的电话簿.人类通过域名在线访问信息,如nytimes.com或espn.com.Web浏览器通过Internet协议(IP)地址进行交互.DNS将域名转换为IP地 ...

  10. 大数据(2)---HDFS集群搭建

    一.准备工作 1.准备几台机器,我这里使用VMware准备了四台机器,一个name node,三个data node. VMware安装虚拟机:https://www.cnblogs.com/niju ...