树的深度优先遍历

概念:树是一种抽象数据类型或是实作这种抽象数据类型的数据结构,用来模拟具有树状结构的数据集合。它是由n(n>=1)个有限节点组成一个具有层次关系的集合。

树的特点:

每个节点有零个或多个子节点;没有父节点的节点称为根节点;每一个非跟节点有且只有一个父节点;除了根节点外,每个子节点可以分为多个不相交的子树

树的深度优先遍历_第1张图片

 树的术语

节点的度:一个节点含有的子树的个数称为该节点的树

树的度:一颗树中,最大节点的度称为树的度

叶节点或终端节点:度为零的节点

父亲节点或父节点:若一个节点含有子节点,则这个节点称为其子节点的父节点

孩子节点或子节点:一个节点含有的子树的根节点称为该节点的子节点

兄弟节点:具有相同父节点的节点

节点的层次:从根开始定义起,根为第一层,根的子节点为第二层,以此类推

树的高度或深度:树中节点的最大层次

堂兄弟节点:父节点在同一层的节点互为堂兄弟

节点的祖先:从根到该节点所经分支上的所有节点

子孙:以某节点为根的子树中任一节点都称为该节点的子孙

森林:有由m(m>=0)棵互不相交的树的集合称为森林

树的种类:

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

有序树:树中任意节点的子节点之间有顺序关系,这种树称为有序树

有序树分为二叉树,霍夫曼树,B树

二叉树:每个节点最大包含二个子树。

树的储存与表示:

顺序储存:将数据结构储存在固定的数组中,然在遍历速度上有一定的优势,但因所占空间较大,是非主流二叉树,二叉树通常以链式储存

树的深度优先遍历_第2张图片

 链式储存

树的深度优先遍历_第3张图片

链式储存:可以储存,缺陷:指针域指针个数不定;解决方案:把多叉树转成二叉树

常见的一些树的应用场景

xml,htm等,编写这些解析器时;路由协议;mysql数据库索引;文件系统的目录结构;AI算法

二叉树的基本能概念:

二叉树是每个节点最多有二个子树的树结构。通常子树称作为“左子树”和“右子树”

二叉树的代码实现:

树的深度优先遍历_第4张图片 

 树的深度优先遍历_第5张图片

 深度优先遍历

对于一颗二叉树,深度优先搜索是沿着树的深度遍历树的节点,尽可能深的搜索树的分支。

深度遍历有三种重要的方法。这三种方法常用来访问树的节点,不同在于访问每个节点的次序不同。方法分别为:

先序遍历:根节点--左子树--右子树

中序遍历:左子树--根节点--右子树

后续遍历:左子树--右子树--根节点

树的深度优先遍历_第6张图片

 树的深度优先遍历_第7张图片

 

 

你可能感兴趣的:(算法)