数据结构之树

1.树(Tree)的基本概念

1.节点,根节点,父节点,子节点,兄弟节点

2.一棵树可以没有任何节点,称为空树

3.一棵可以只有1个节点,也就是只有根节点

4.子树,左子树,右子树

5.节点的:子树的个数

6.树的:所有节点度中的最大值

7.叶子节点:度为0的节点

8.非叶子节点:度不为0的节点

9.节点的深度:从根节点到当前节点的唯一路径上的节点总数

10.节点的高度:从当前节点到最远叶子节点的路径上节点总数

11.树的深度:所以节点深度中的最大值

12.树的高度:所以节点高度中的最大值

13.树的深度等于树的高度

2.有序树,无序树,森林

有序树

树中任意节点的子节点之间有顺序关系

无序树

树中任意节点的子节点之间没有顺序关系,也称自由树


森林

由n(n>=0)棵互不相交的树组成的集合

3.二叉树

二叉树的特点

每个节点的度最大为2(最多拥有2颗子树)

左子树和右子树是由顺序的(二叉树是有序树)

即使某节点只有一棵子树,也要区分左右子树

二叉树的性质

非空二叉树的第i层,最多有2^(i -1)个节点(i>=1)

在高度为h的二叉树上最多有2^h-1 个节点(h>=1)

对于任何一棵非空二叉树,如果叶子节点个数为n0,度为2的节点个数为n2,则有:n0 = n2+1

假设度为1的节点个数为n1,那么二叉树的节点总数 n = n0+n1+n2

二叉树的边数T = n1+2*n2 = n -1 = n0+n1+n2-1

因此 n0 = n2+1


4.真二叉树


真二叉树:所有节点的度要么为0,要么为2


5.满二叉树


满二叉树:最后一层节点的度为0,其他节点的度为2

假设满二叉树的高度为h(h>=1),那么

第i层的节点数量为:2^(i-1)

叶子节点数量:2^(h-1)

总节点数量n

n=2^h-1 = 2^0+2^1 +2^2+...+2^(h-1)

h = \log_2 (n+1)

在同样高度的二叉树中,满二叉树的叶子节点数量最多,总节点数量最多

满二叉树一定是真二叉树,真二叉树不一定是满二叉树

6.完全二叉树


完全二叉树
满二叉树

完全二叉树:对节点从上到下,左到右开始编号,其所有编号都能和相同高度的满二叉树中的编号对应

叶子节点只会出现在最后2层,最后1层的叶子节点都靠左对齐

完全二叉树丛根节点倒数第2层是一棵满二叉树

满二叉树一定是完全二叉树,完全二叉树不一定是满二叉树

完全二叉树的性质

度为1的节点只有左子树

度为1 的节点要么1个,要么0个

同样节点的数量的二叉树,完全二叉树的高度最小

假设完全二叉树的高度为h(h>=1),那么

至少有2^(h-1) 个节点(2^0+ 2^1+ 2^2+ ...+2^(h-2)+ 1

最多有2^h-1 个节点(2^0+ 2^1+ 2^2+ ...+ 2^(h-1),满二叉树

节点总数为n

2^(h-1) <= n < 2^h

h-1 <=\log_2 n  < h

h = floor(\log_2 n )+1

floor向下取整,ceiling向上取整

(经典题目)如果一棵完全二叉树有768个节点,求叶子节点的个数

假设叶子节点个数为n0,度为1的节点个数为n1,度为2的节点个数为n2

总节点个数为n= n0+n1+n2,而且n0 = n2+1

n = 2*n0+n1-1

完全二叉树的n1要么为0,要么为1

n1为1的时候,n =  2n0,n必为偶数

叶子节点个数n0  =  n/2,非叶子点个数为 n1+n2 = n/2

n1为0的时候 n = 2*n0-1,n必为奇数

叶子节点个数n0 = (n+1)/2,非叶子节点个数n1 + n2 = (n-1)/2

叶子节点个数n0 = floor((n+1)/2) = ceiling(n/2)

非叶子节点个数n1+n2 = floor(n/2) = ceiling((n-1)/2)

因此叶子节点个数为384

7.二叉树的遍历

根节点访问顺序的不同,二叉树的常见遍历方式有4种

前序遍历

根节点,前序遍历左子树,前序遍历右子树

7-4-2-1-3-5-9-8-11-10-12


前序遍历

中序遍历

中序遍历左子树根节点,中序遍历右子树

1-2-3-4-5-6-7-8-9-10-11-12

二叉搜索树的中序遍历结果是升序或者降序


中序遍历

后序遍历

后序遍历左子树,后序遍历右子树,根节点

1-3-2-5-4-9-10-12-11-9-7

后序遍历

层序遍历

丛上到下,丛左到右依次访问每一个节点

7-4-9-2-5-8-11-1-3-10-12

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

推荐阅读更多精彩内容

  • 一、树的基本概念 1.1树的定义 树是 N(N>=0) 个结点的有限集合,N = 0 时,称为空树,这是一种特殊的...
    末雨潮声阅读 682评论 0 0
  • 一、树的基本概念 1.结点的度: 结点子结点的个数.A结点,也就是根节点的度为3分别是BCDK,L节点的度为0 ...
    马思克Musk阅读 683评论 0 1
  • 树是n个结点的有限集,当n=0时,为空树。在任意一个非空树中有且仅有一个特定的称为根的结点;当n>1时,其余结点可...
    keeeeeenon阅读 308评论 0 2
  • 1. 概念 与线性结构的“一对一”不同,树是“一对多”的数据结构。 树是有限个结点n(n >= 0)的集合。n为0...
    我才是臭吉吉阅读 784评论 0 0
  • 树的概念 有很多数据的逻辑关系并不是线性关系,在实际场景中,常常存在着一对多,甚至是多对多的情况。例如以下两种场景...
    david161阅读 512评论 0 1