二叉树


1 学习的内容

在之前分析finsh shell的时候,看到siblings,随手一搜,发现这个是在二叉树中提到的,所以学习一下。

二叉树,分为完美二叉树、完全二叉树和完满二叉树。

2 树

我抄一个定义,链接
树是由结点或顶点和边组成的(可能是非线性的)且不存在着任何环的一种数据结构。没有结点的树称为空(null或empty)树。一棵非空的树包括一个根结点,还(很可能)有多个附加结点,所有结点构成一个多级分层结构。

这里面提到的结点,在finsh shell中同样也提到过,也就是node。这里还是要区分一下:

节点和结点:

  • joint和connection为节点。"节点"是物理概念,是对实际结构中的一个"节段"与另一个"节段"物理连接区的统称。
  • node是结点。"结点"是力学概念,是在力学模型上根据分析需要所设置的标识点或计算点。

姑且可以参考:链接

也将树的一些概念性内容贴出来:

英文 中文 含义
root 树的顶端结点
child 孩子 当远离根(Root)的时候,直接连接到另外一个结点的结点被称之为孩子(Child)
parent 双亲 相应地,另外一个结点称为孩子(child)的双亲
siblings 兄弟 具有同一个双亲(Parent)的孩子(Child)之间互称为兄弟
ancestor 祖先 结点的祖先(Ancestor)是从根(Root)到该结点所经分支(Branch)上的所有结点
descendant 子孙 反之,以某结点为根的子树中的任一结点都称为该结点的子孙(Ancestor)
leaf 叶子 没有孩子的结点(也就是度为0的结点)称为叶子(Leaf)或终端结点
branch 分支 至少有一个孩子的结点称为分支(Branch)或非终端结点
degree 结点所拥有的子树个数称为结点的度(Degree)
edge 一个结点和另一个结点之间的连接被称之为边
path 路径 连接结点和其后代的结点之间的(结点,边)的序列
level 层次 结点的层次(Level)从根(Root)开始定义起,根为第0层,根的孩子为第1层。以此类推,若某结点在第i层,那么其子树的根就在第i+1层
Height of node 结点的高度 结点的高度是该结点和某个叶子之间存在的最长路径上的边的个数
Height of tree 树的高度 树的高度是其根结点的高度
Depth of node 结点的深度 结点的深度是从树的根结点到该结点的边的个数
Forest 森林 森林是n(>=0)棵互不相交的树的集合

2.1 二叉树

每个结点至多拥有两棵子树(即二叉树中不存在度大于2的结点),并且,二叉树的子树有左右之分,其次序不能任意颠倒

其具有以下的性质:

  1. 若二叉树的层次从0开始,则在二叉树的第i层至多有2^i个结点(i>=0)。
  2. 高度为k的二叉树最多有2^(k+1) - 1个结点(k>=-1)。 (空树的高度为-1)
  3. 对任何一棵二叉树,如果其叶子结点(度为0)数为m, 度为2的结点数为n, 则m = n + 1。

2.1.1 完美二叉树

英文:
PBT(perfect binary tree)。

定义:
一个深度为k(>=-1)且有2^(k+1) - 1个结点的二叉树。也就是说, 除了叶子结点之外的每一个结点都有两个孩子,每一层(当然包含最后一层)都被完全填充。

如下图所示:

完美二叉树.png

2.1.2 完全二叉树

英文:
CBT(Complete Binary Tree)。

定义:
从根结点到倒数第二层满足完美二叉树,最后一层可以不完全填充,其叶子结点都靠左对齐。

如下图所示:

完全二叉树.png

2.1.3 完满二叉树

英文:
FBT(Full Binary Tree),又称为:Strictly Binary Tree。

定义:
所有非叶子结点的度都是2。换句话说,只要你有孩子,你就必然是有两个孩子。

如下图所示:

完满二叉树.png

2.2 二叉树遍历

2.2.1 前序遍历

2.2.2 中序遍历

2.2.3 后序遍历

2.3 二叉树实现的计算器

按照这个要求来看,需要做到的有:
* 能够含有( )、+、-、*、/ 等运算符的实数表达式计算功能
* 能够处理小数和负数
* 能够处理求余运算符(%)
* 能够处理乘方(^)
* 能够处理exp、sin、cos、tan、ctan等常见函数
* 能够打印包含括号的中缀表达式

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,293评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,604评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,958评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,729评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,719评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,630评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,000评论 3 397
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,665评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,909评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,646评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,726评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,400评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,986评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,959评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,996评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,481评论 2 342

推荐阅读更多精彩内容

  • 目录 简书的 markdown 都不支持 [TOC] 语法……我就不贴目录了。下面按照类别,列出了29道关于二叉树...
    被称为L的男人阅读 3,284评论 0 8
  • 数据结构和算法--二叉树的实现 几种二叉树 1、二叉树 和普通的树相比,二叉树有如下特点: 每个结点最多只有两棵子...
    sunhaiyu阅读 6,422评论 0 14
  • 0. 什么是树 数据的基本单位是数据元素,在涉及到数据处理时数据元素之间的关系称之为结构,我们依据数据元素之间关系...
    安安zoe阅读 481评论 0 0
  • 树和二叉树 1、树的定义 树(Tree)是由一个 或 多个结点 组成的有限集合T,且满足: ①有且仅有一个称为根的...
    利伊奥克儿阅读 1,347评论 0 1
  • 关于树的定义和存储结构可以查看上一篇文章树的定义和树的三种存储结构 一、二叉树的定义 二叉树的定义 二叉树(Bin...
    NotFunGuy阅读 1,945评论 5 25