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 ...
随机推荐
- Density of Power Network(ZOJ 3708)
Problem The vast power system is the most complicated man-made system and the greatest engineering i ...
- Linux环境下levelDB源码编译与安装
1.下载源码并编译 git clone https://github.com/google/leveldb.git cd leveldb //编译源码的时候需要安装cmake,并且版本需要大于3.9, ...
- 解析NaN
此文为自译文,且第一次翻译,有不足之处. 原英文地址:https://en.wikipedia.org/wiki/NaN 我的理解 32位下二进制的 NaN 存储格式为s111 1111 1111 1 ...
- oracle清除归档
清除Oracle归档日志命令echo -e 'delete noprompt archivelog ALL COMPLETED BEFORE '\'SYSDATE-${DELETE_ARCHIVELO ...
- C#程序调用CMD执行命令,将参数传递给cmd.exe
proc.StartInfo.Arguments = "/c ping 10.2.2.125"; C#程序调用CMD执行命令 将参数传递给cmd.exe的(Passing an a ...
- vue js select下拉框
<template> <ul id="select"> <li> <div class="select-head"&g ...
- 安装Chrome扩展程序xpath
最近工作用到xpath,直接从浏览器复制下来路径时常会出错而且长度很长,于是我想到之前用过的一款chrome插件,可以直接编写xpath语句,并实时出现解析出的结果,检验xpath语句是否编写正确.效 ...
- SpringBoot/SpringMVC 下载本地文件
页面代码: <!DOCTYPE html> <html lang="utf-8"> <meta http-equiv="Content-Ty ...
- Android中利用jsoup解析html页面
学习jsoup :jsoup学习网站 Android 中使用: 添加依赖 implementation 'org.jsoup:jsoup:1.10.1' 直接上代码: package com.load ...
- kotlin创建类的实例
Java 中使用new关键字,但是在kotlin中调用函数和创建类的实例直接省略new 比如 new myClass()变成类myClass()