树、二叉树

-树

树的引入:

(分层次组织在管理上具有更高的效率)
首先分析对存储数据的查找,有两种类型:
静态查找:集合中记录是固定的,没有插入和删除操作,只有查找;
动态查找:集合中记录是动态变化的,除查找外还有插入和删除。

我们暂时先考虑较简单的静态查找,静态查找的方法有:
方法1-顺序查找:
利用数组循环查找(数组下标为0时是哨兵,哨兵就是我们想要查找的值)
for( int i = array.length-1; array[ i ] != K; i-- );
array[ 0 ] = K;
K为需要查找的数
方法2-二分查找:
前提:假设放置是顺序从小到大,且是在数组中查找,不能是链表
二分查找:判定树,判定树上每个结点需要的查找次数刚好为该结点所在的层数,查找成功时查找次数不会超过判定树的深度 n个结点的判定树的深度为(log2n)+1;
把数据按树的形式存储数据而不是数组的形式。
由此引入树的概念

什么是树?

树:由n个结点构成的有限集合;n=0时为空树。
树中有一个称为“根”的特殊结点用r表示;其余结点可分为m个互不相交的有限集 其中每个集合本身又是一棵树,称为原来树的子树。
子树不相交,除了根结点外,每个结点有且仅有一个父结点,一棵N个结点的树有N-1条边。
树的一些基本术语:1.结点的度:结点的子树个数 2.树的度:树的所有结点中最大的度数 3.叶结点:度为0的结点 4.父结点:有子树的结点是其子树的根结点的父结点,对应子结点 5.兄弟结点:具有同一父结点的各结点彼此是兄弟结点 6.路径和路径长度:从结点n1到结点nk的路径为一个结点序列 ni是ni+1的父结点 路径所包含边的个数为路径的长度 结点的层次:根结点在1层 其他结点的层数是其父结点的层数加1 树的深度:树中所有结点中的最大层次是这棵树的深度
数组及普通链表均难以实现树
儿子-兄弟表示法 两个指针:第一个指针指向其第一个子结点 第二个指针指向其下一个兄弟指针 最后一个兄弟指针指向空
这样的树称为二叉树,每一个结点上是两个指针

-二叉树:

一个有穷的结点集合,这个集合可以为空;若不为空,则它是由根结点和称为其左子树和右子树的两个不相交的二叉树组成,二叉树子树有左右之分。
五种基本形态:空、只有一个结点、只有左结点、只有右结点、有左右两个结点

特殊的二叉树:

斜二叉树、完美二叉树(满二叉树)、完全二叉树
关于完全二叉树:有n个结点的二叉树,对树中结点按从上至下从左至右顺序进行编号 编号为X的结点与满二叉树结点中编号为X的结点在二叉树中的位置相同

一个二叉树第n层的最大结点数为:2的n-1次方,
深度为k的二叉树有最大结点总数为:2的k次方减1,
对任何非空二叉树,若n0表示叶结点个数 n2是度为2的非叶结点个数,那么两者满足关系 n0 = n2+1
证明:从边的数量看,从上往下与从下往上看 n0+n1+n2-1=n1+2*n2;所以 n0=n2+1
操作集:判断二叉树是否为空;遍历:按顺序访问每个结点。
三种遍历:先序:根-左子树-右子树;中序:左子树-根-右子树;后序:左子树-右子树-根;层次遍历:从上到下、从左到右。

二叉树的存储结构

1.顺序存储结构

完全二叉树:按从上到下从左到右顺序存储n个结点(序号从1开始)的完全二叉树的结点父子关系存入数组中 。
-非根结点(序号i>1)的父结点的序号是[i/2]
-结点(序号为i)的左孩子结点的序号2i
-结点(序号为i)的有孩子结点的序号为2i+1
一般二叉树也可采用上述结构 只需用空结点将其补齐为对应的完全二叉树,不过这样会造成空间浪费

2.链表存储 Left-Data-Right

结构体为包含两个指针的结构

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

推荐阅读更多精彩内容