树
上一个博客已经解释过了什么是线性和非线性的区别。想要系统的了解,需要参照之前的博文。
树是一种非常重要的非线性结构!
为什么称为树结构呢?主要是长得有点像,树形结构讲究层级和分叉,和自然界的树比较相近。
树简介:
以下的树是无序,单纯按存放方式。
理解树:
这是一个简单的树形结构图,其中在理论范畴来讲,节点三到五称为业主节点。作为技术人员,我得找一个与我们比较近的例子!
文件系统(其实不是树,但是可以更好的理解树的传承关系):
每一个文件夹都可以作为一个节点。
树类型:
二叉树
二叉树,就是开两个叉的,指向两个方向。二叉树是树分支里面非常重要的结构。为何二叉树重要,个人觉得得从二进制的思维说起。数学中的大于小于和0,1状态是相近的,因此在数据判断上大于小于判断是有优势的。在数据排序中一般是大于小于状态(等于就是自身,去除重复后就没有了),二叉树也是这种排列方式,所以从硬件逻辑判别方面来说,二叉树是有较大优势的。
术语:方向分为左,右方向
节点:根节点,叶子节点(终端节点)
度:一个根节点的孩子数
树存储-顺序存储和链式存储:
由于这两种存储方式的不同,顺序存储需要在存储前排序好,链式存储则靠指针域指向反应逻辑规律。
树遍历
树的遍历一般遵循以下三种方式:
前序:左-根-右
中续:根-左-右
后续:左-右-根
树应用
最优二叉树-哈夫曼树
最优:权带路径最小(WPL)
哈夫曼编码:还有很多。