c++:论如何成功把自己搞懵【二叉树特辑①】(不定期更新)
并不正经的前言
以前我这个小白看OI的书,老觉得有些东西很高端(看不懂的自然就很高端【滑稽】):什么栈啊,位运算啊,二叉树啊。有些东西我学了之后也很迷糊(真的不是因为傻?),做题的时候总是可以把自己搞懵,更甚有题解也看不懂……为了让众多和我一样的小白了解高端的东西,于是就有了c++:论如何成功把自己搞懵这个系列。
bb了这么多废话 开始吧
什么是二叉树
什么是树
树是一种非线性的数据结构,能很好地描述有分支和层次特性的数据集合。
about 树
如上图,我们把红色的点称作结点(node),把最上方的结点叫做根结点,根结点下方的两个结构,我们称之为左子树和右子树(也可称为左孩子和右孩子)。我们把一个结点拥有的子树个数成为度,度为0的结点我们称为叶结点。我们把一棵树中所有结点层次的最大值叫做深度。如图的二叉树深度为4。
什么是二叉树
二叉树是一种特殊的树——即度为二的树。
二叉树的结点计算公式
在一个二叉树的第i层上,最多有2^(i-1)个结点。
深度为k的二叉树至多有(2^k)+1个结点。
二叉树的遍历
现在,请想象您正身处某二叉树的某一结点。想要知道这个二叉树的全貌,您必须遍历这个二叉树:一个个走遍这个二叉树的每一个结点,我们称之为遍历。有三种遍历方式:先序遍历,中序遍历,后序遍历。下面一图可以为您展示:
二叉树的前序遍历
代码实现二叉树
c++:论如何成功把自己搞懵【二叉树特辑①】(不定期更新)的更多相关文章
- 面试阿里被分布式“搞懵”,Redis、MongoDB、memcached没答上来
都说大厂面试难,一点也没有错,一线大厂的面试究竟怎么样还得自己亲身经历了才知道.小白面试阿里,就被面试官吊打,一问分布式就被“搞懵”了,Redis.MongoDB.Memcached都没答好,很多没有 ...
- python一招完美搞定Chromedriver的自动更新
日常的web自动化过程中,我们常常用python selenium库来操纵Chrome浏览器实现网页的自动化.这其中有个比较头疼的问题:Chrome的更新频率非常频繁,与之对应的Chromedrive ...
- 【java 数据结构】还不会二叉树?一篇搞定二叉树
二叉树是我们常见的数据结构之一,在学习二叉树之前我们需要知道什么是树,什么是二叉树,本篇主要讲述了二叉树,以及二叉树的遍历. 你能get到的知识点? 1.树的介绍 2.二叉树的介绍 3.二叉树遍历的四 ...
- gcc8.2安装__(沒有成功)
重要:https://gcc.gnu.org/install/prerequisites.html 官方安装所需要的工具文档 还有就是这篇文章 http://blog.51cto.com/2716 ...
- 教你在windows10环境下如何安装minepy并成功运行!
在学习使用sklearn做单机特征工程这篇文章时,发现在计算互信息时from minepy import MINE代码运行出错ModuleNotFoundError: No module named ...
- 搞Jedis案例出现问题,有大佬帮我看看怎么解决吗?先感谢大佬点进来看了---Day31
今天学了Jedis的相关内容,然后做了一个案例,但是出现了错误,然后我百度了一晚上没有解决,想到看看发个博客能不能有大佬帮我看一下问题出现在哪里,百度了一晚上有点懵逼.求大佬帮我解决,在这小弟我先万分 ...
- 被面试官问懵:TCP 四次挥手收到乱序的 FIN 包会如何处理?
摘要:收到个读者的问题,他在面试的时候,被搞懵了,因为面试官问了他这么一个网络问题. 本文分享自华为云社区<TCP 四次挥手收到乱序的 FIN 包会如何处理?>,作者:小林coding . ...
- 2016 windows安装phing:安装成功
21:39 2016/7/212016 windows安装phing:安装成功注意:出现错误时就去更新pear:参见:http://www.cnblogs.com/pinnasky/archive/2 ...
- thinkphp判断更新是否成功
如何判断一个更新操作是否成功 $Model = D('Blog'); $data['id'] = 10; $data['name'] = 'update name'; $result = $Model ...
随机推荐
- mysql 进程
--------------------查看mysql所有进程-----------show full processlist -------------------查看mysql 账号权限----- ...
- Til the Cows Come Home ( POJ 2387) (简单最短路 Dijkstra)
problem Bessie is out in the field and wants to get back to the barn to get as much sleep as possibl ...
- linux下设置git代理访问.
有时候克隆仓库巨慢无比,需要设置代理. 一般情况下 proxychains 可以搞定的. 但是某些情况,如go 安装模块的时候是调用git的.这个时候proxchains就不行了. go 也可以通过设 ...
- 大整数乘法(c++)【转载】
摘自<c++数据结构原理与经典问题求解> #include #include #include using namespace std; //返回位数为size1+size2 int* m ...
- Flask-login 例子
################################################################################ from flask.ext.logi ...
- java并发编程--第一章并发编程的挑战
一.java并发编程的挑战 并发编程需要注意的问题: 并发编程的目的是让程序运行的更快,然而并不是启动更多的线程就能让程序最大限度的并发执行.若希望通过多线程并发让程序执行的更快,会受到如下问题的挑战 ...
- 如何构建自己的docker镜像
需求情况:springboot项目想要部署到docker里面,如何部署? 步骤如下: 1.将jar包上传linux服务器 /usr/local/dockerapp 目录,在jar包所在目录创建名为 D ...
- jQuery 的on()方法
jQuery 的on()方法 一.总结 一句话总结: 1.普通添加事件:$("a").on("click", function () {执行的代码}) 2.未创 ...
- recyclerView 嵌套 recyclerView 点击被拦截
上层recyclerView.setLayoutFrozen(true);下层可以接收到点击事件.
- centos 开启关闭网卡
ifdown ifcfg-enp7s0 关闭网卡 ifup ifcfg-enp7s0 开启网卡