数据结构与算法:树

树状图是一种数据结构,它是由n(n>=1)个有限节点组成一个具有层次关系的集合。把它叫做“树”是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。树状图有和树相同的结构,树有根、枝、叶,而树状图也有根——根节点、枝——非叶子节点的子节点、叶——叶子节点。每颗树只会有一个根,枝能衍生出新的枝和叶,而叶是最后的一个部位,同理树状图也一样。

树的常用词:

节点:树中的每个元素都叫节点

权值:节点的值

根节点:树的第一个元素,它没有父节点

父节点:若一个元素含有子节点,则它就是该子节点的父节点

子节点:若一个元素含有父节点,则它就是该父节点的子节点

叶子节点:若一个元素含有父节点,但它没含子节点,那它就是一个叶子节点

子树:若一个元素含有父节点,则该节点和该节点下所有子节点(包括子节点的子节点)组成的一个树就是父节点的子树

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

树的层级:根节点为第一层,它的子节点为第二层,该子节点的子节点为第三层,以此类推

树的高度或深度:即树的最大层级

路径:从根节点找到某一节点的路线

数据结构与算法:树

  树的种类

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

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

二叉树:每个节点最多含有两个子树的树称为二叉树;

满二叉树:叶节点除外的所有节点均含有两个子树的树被称为满二叉树

完全二叉树:有2^k-1(k:层级)个节点的满二叉树称为完全二叉树

哈夫曼树(最优二叉树):带权路径最短的二叉树称为哈夫曼树或最优二叉树;

  树的表达方式

图像表达法

即通过图像的方式直接表达出各节点的关系

数据结构与算法:树

符号表达法

用括号先将根结点放入一对圆括号中,然后把它的子树由左至右的顺序放入括号中,而对子树也采用同样的方法处理;同层子树与它的根结点用圆括号括起来,同层子树之间用逗号隔开,最后用闭括号括起来。如上面树状图可以表示为:( A ( B ( C , D ) , E ( F ) ) )

遍历表达法

前序遍历:先输出父节点,再遍历左子树和右子树。如上面树状图用前序遍历表达为:ABCDEF

中序遍历:先遍历左子树,后输出父节点,再遍历右子树。如上面树状图用中序遍历表达为:CBDAEF

后序遍历:先遍历左子树和右子树,再输出父节点。如上面树状图用后序遍历表达为:CDBFEA

  为什么要使用树结构?

数组结构

优点:通过下标方式来访问数据,速度快。对于有序数组还可以用二分查找等查找算法来加快速度。

缺点:当向数组中插入或删除数据时,数组需要整体移动,效率较低。

链表结构

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wppxfs.html