[Day14]程序菜鸟自学C++资料结构演算法 – 二元树的走访Binary Tree Traversal

前言:昨天介绍完了二元树的两种储存方式,今天要来介绍如何读取二元树,称之为走访,而走访方式就有大约四种,今天就一一为大家介绍。

何谓走访?走访其实就是要读取到每一个节点,不同的走访方式在於要先处理哪一边的资料,且左子树的优先权必大於右子树,所以重点就在根节点的位置在哪里。

1.前序走访 Preorder:

前序走访的顺序是根节点→左子树→右子树
https://ithelp.ithome.com.tw/upload/images/20210928/20140187ldWEt7qapv.png
牛刀小试:先把左子树和右子树想像成一个大节点,向上面的图片一样,会比较容易成功。
https://ithelp.ithome.com.tw/upload/images/20210928/20140187RShNXzi8i1.png
前序走访:x+46-82

实作:这次用上一篇链结串列表示法的二元树程序码作范例,可以先准备好呦=U=
https://ithelp.ithome.com.tw/upload/images/20210928/20140187qwfEaTxgvL.png
https://ithelp.ithome.com.tw/upload/images/20210928/20140187MsNEXpYT2y.png

2.中序走访 Inorder:

可以说是我们最熟悉的走访方式,平常我们所写的算式或是按计算机的顺序都是中序走访。中序走访顺序左子树→根节点→右子树
https://ithelp.ithome.com.tw/upload/images/20210928/20140187K3FX6kE7Gi.png
牛刀小试:
https://ithelp.ithome.com.tw/upload/images/20210928/2014018747sO3pvQuk.png
中序走访:4+6x8-2

实作:
https://ithelp.ithome.com.tw/upload/images/20210928/20140187M2837Hn7gG.png
https://ithelp.ithome.com.tw/upload/images/20210928/20140187g5i4oCEWXb.png

3.後序走访 Postorder:

後续走访的顺序左子树→右子树→根节点
https://ithelp.ithome.com.tw/upload/images/20210928/20140187Valot86UKY.png
牛刀小试:
https://ithelp.ithome.com.tw/upload/images/20210928/201401873pdBM4Iww8.png
後序走访:46+82-x

实作:
https://ithelp.ithome.com.tw/upload/images/20210928/20140187oY6GRyFTP0.png

4.层序走访 Level-order:

与前三种走访方式较为不同,以层次的等级决定走访的顺序第一层→第二层→第三层…以此类推。

牛刀小试:
https://ithelp.ithome.com.tw/upload/images/20210928/20140187JIQtqdhUGC.png
层序走访:x+-4682

实作:需用到伫列存取树的节点。
https://ithelp.ithome.com.tw/upload/images/20210928/2014018727hzAdRxCo.png
https://ithelp.ithome.com.tw/upload/images/20210928/20140187OAT0fWirJr.png

今日小结:今天介绍了四种二元树的走访,只要注意根节点的位置就一定能轻松掌握,明天会把程序码完整地补上还会继续介绍二元树的更多种运用。


<<:  Day16 Loops(Ⅲ)

>>:  Day13 - 如何用shioaji搭配Ta-Lib计算技术指标: 安装篇

Day 03 : Zettelkasten卡片盒笔记法,建立知识连结网路来活用笔记

前言 在 《Day 01 : 导言 - 知识是如何形成的?》 与 《Day 02 : 你所知道的「笔...

MacOS 透过 NVM 管理 Node.js 的版本管理器(Node Version Manager)

NVM 是一个非常方便的 Node 管理器,你可以安装任何上线的 Node.js 版本并随时切换,以...

Day14 参加职训(机器学习与资料分析工程师培训班),Django实作 & 深度学习

上午: AIoT资料分析应用系统框架设计与实作 今日老师教学运用Django框架,将Bootstra...

[Day 15] epoll

前言 在系列文的第二篇我就提到过, 一个非同步运行框架, 应该要含有两种架构, 一个是能够 mult...

Day 02: JavaScript 与 物件导向程序设计

物件导向程序设计是什麽? 英文原文:Object-oriented programming,简称 O...