三、树与二叉树

课程是中国大学MOOC浙江大学出的数据结构。
作为一个数据结构爱好者,我觉得很有必要稍微整理下各章节的笔记,对知识进行梳理。
查找
首先,老师从“查找”入手,查找分为静态和动态,演示了静态查找的例程,并介绍了‘建立哨兵’的思想。而这个例程使用的是普通的顺序查找,因为其低效性,我们又引入了二分查找(Binary Search)
二分查找
条件有二:①本身是有序的②在数组里实现。他的时间复杂度比顺序查找缩短了不少。读者们可以自己算一下~然后,从二分查找引出了二分查找判定树,层次即为最坏情况比较次数[log2n]+1,ASL平均成功查找次数。
成功过渡到树,终于进入了主题。容易混淆的几个概念,结点的度,树的度,叶节点,树的深度,其他都还好。概念介绍完,怎么实现树呢?数组?对任意的树结构来说,难度太大,我们往往用链表来存储。随之而来的,有2个问题:①结点类型不统一,②若强行使之统一,则会造成较多浪费。解决办法:提出儿子-兄弟表示法。其优点便是是结构统一,但造成的浪费较少,可以计算浪费为2N-(N-1),其中N-1是N个结点固定的边数。有趣的是,我们把儿子-兄弟表示树旋转45°,便得到一个度为2的二叉树,接下来进入到二叉树的部分。
二叉树
度为2,但是有左右之分。它有五种基本形态,并介绍了三种特殊二叉树:斜二叉树、完美(满)二叉树、完全二叉树。二叉树第i层最多2exp{i-1}个节点,深度为k的二叉树最多2exp{k}-1个结点。记叶结点为N0,两个儿子的结点为N2,他们满足个关系式:N0=N2+1,可自证。
二叉树的操作
判空、遍历、创建等。其中遍历尤其重要,后面介绍了4种遍历方法;前中后序+层次遍历。
顺序存储结构
二叉树不同于树,他的存储结构可以用数组存放,即顺序存储结构的实现。但一般针对于完全二叉树,普通二叉树则会造成大量空间浪费。遍历过程中,完全二叉树非跟结点的父结点为下取整i/2,任意结点的左儿子是2i,因此可以快速访问任意结点。
链表存储方法
除了一个data位置存放数据,分为两个指针,分别指向左右子树。
三种递归遍历方法
的具体程序编写。总结为:路径实际上都相同,每个结点都访问了三次,只是访问各结点的实际不同。最后讲了遍历的非递归的算法,实际上是用堆栈来实现递归操作,以中序非遍历来实现是最简单的,稍微改动便能改为先序,而后序则难了许多,需要课外去思考下。
第四种遍历算法
层次遍历。二叉树的遍历实际上是数据从二维到一维的转化。前面通过用堆栈(先保存自己)实现了这个转化,下面我们用队列(先保存左右儿子)也可实现,而队列实现的遍历结果,我们称之为层次遍历。主要步骤:①根结点入队;②结点出队,并访问;③出队结点的左右儿子入队。然后循环②③步骤便能实现二叉树的遍历。
二叉树的应用
①输出叶子结点
通过前序遍历在访问时稍微小改动(添加个条件)即可实现。
②求二叉树的高度
思想:左右子树高度+1=树的高度
通过后序遍历的小改动,比较左右子树的高度,取max+1,递归算出树的高度
③二元运算表达式树及其遍历
前中后序分别对应前中后缀表达式
其中缀表达式是不准确的(因为运算优先级的限制),改进方法可以在输出左子树时添加括号,来准确表示运算顺序
而我们通过两种遍历可以唯一确定一个二叉树,但必须有中序遍历才行,因为先序和后序同时对于不同二叉树可能输出一样的值,即不唯一。
树的同构问题
这是PTA上练习,还没coding,后序会发布到我的blog,这里总结下老师给的思路。
1.二叉树的表示:这里用顺序(数组)表示,除了将其视为完全二叉树外,讲了一种结构数组(静态链表)的方法来表示二叉树。
2.建二叉树
3.同构的判断:注意逻辑的完整性

有两个问题后续值得思考:
①后序遍历非递归的实现算法编写
②树的同构的判别具体算法的编写

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

推荐阅读更多精彩内容