博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
树及其遍历
阅读量:6936 次
发布时间:2019-06-27

本文共 651 字,大约阅读时间需要 2 分钟。

树(Tree)

树,顾名思义,长得像一棵树,不过通常我们画成一棵倒过来的树,根在上,叶在下。不说那么多了,图一看就懂:

当然了,引入了树之后,就不得不引入树的一些概念,这些概念我照样尽量用图,谁会记那么多文字?

面试的时候我们经常被考到的是一种叫“二叉树”的结构,二叉树当然也是树的一种了,它的特点是除了叶以外的节点都有两个子,图:

由此我们还可以推出“三叉树”:

当然还有“四叉树”,“五叉树”,“六叉树”……但太难画了,节点太多,略过。

树的遍历(Traversal)
值得再提一下的是二叉树,因为它确实比较特别,节点有两个子,这两个子是有左右之分的,颠倒一下左右,就是不一样的二叉树了,所以左右是不能随便颠倒的。

在第三篇讲到“队”的时候,提及到了广度优先遍历(Breadth-first traversal),除了广度优先遍历之外,还有深度优先遍历(Depth-first Traversal),深度优先遍历又可分为:前序遍历(Preorder Traversal),后序遍历(Postorder Traversal)和中序遍历(Inorder Traversal),其中中序遍历只有对二叉树才有意义,下图解释这几种遍历:

好了,又到代码阶段,写点代码。我看过许多数据结构的教材,二叉树遍历都是必不可少的内容,而且我知道的全部都是用递归实现的,现在,我要求你不用递归,实现对二叉树的中序遍历。怎么办?我给个提示:广度优先遍历时候我们用了队,中序遍历,我们使用*栈*。看看能不能写出来,我也来写:

转载地址:http://fsljl.baihongyu.com/

你可能感兴趣的文章
Oracle 在64位机器上使用plSQL连接Oracle的问题(SQL*Net not properly installed)
查看>>
什么是呼叫中心?
查看>>
使用Monitor调试Unity3D Android程序日志输出(非DDMS和ADB)
查看>>
获取IOS应用的子目录
查看>>
EntityFramework 7 Linq Contains In 奇怪问题
查看>>
java.util.concurrent.Exchanger应用范例与原理浅析--转载
查看>>
apk 静默安装
查看>>
OnCreateContextMenuListener接口简介
查看>>
tp 批量转码
查看>>
国内阿里maven仓库镜像maven配置文件maven仓库速度快
查看>>
VIRTUALBOX 虚拟机安装 OS X 10.9 MAVERICKS
查看>>
DWZ使用笔记
查看>>
XP的定时关机命令?
查看>>
ORACLE SEQUENCE 介绍
查看>>
atitit.seo 发帖关键词以及链接的制作.doc
查看>>
GoogleProgressBar
查看>>
Sql Server之旅——第四站 你必须知道的非聚集索引扫描
查看>>
tcpdump抓包分析具体解释
查看>>
多线程设计模式总结(三)
查看>>
Silverlight 安装失败 提示 消息 ID 1603 的解决方法
查看>>