蜡笔小说

阅读记录  |   用户书架
上一页
目录 | 设置
下一章

第236章 声名鹊起(2 / 2)

加入书签 | 推荐本书 | 问题反馈 |

向父节点的边不存在这个表中。同时如果子节点是没有顺序的,也是因为一个节点的子节点不会同时是其他节点的子节点,也可以把子节点直接当成存边的链表的节点,这时候每个节点只需要储存两个指针,所以这种存储方法有时候也会被叫做多叉树转二叉树。

对于子节点是有顺序的有根树,每条边都可以以固定的位置分别储存。对于完全二叉树甚至能直接用一个数组访问所有节点,不另外储存边的信息。有的树可以被设计成固定的从根节点开始访问,这时候可以不储存父节点。同样的,有的树也可以省略子节点,例如并查集。

树的遍历

对于一般的树,可以用和普通的图一样的方法遍历,比如深度优先搜索和宽度优先搜索。如果和树的每个节点相邻的点有固定的顺序,深度优先搜索可以不储存当前点以外的任何信息,而且不用判重。而在有根树中更方便,所以有根树中很少使用宽度优先搜索。

对于有根树的从根开始的深度优先搜索遍历,有三种特定的顺序

前序遍历

先访问根节点,然后再访问所有的子树;

后序遍历

先访问子树,然后再访问根节点;

中序遍历

二叉树专用,先访问左子树,然后是根节点,最后是右子树。

注意对于每一种遍历,事实上都得先访问根节点,这里的遍历顺序是指处理节点中的数据的顺序。已知中序遍历和任一其他遍历的情况下,可以还原一个二叉树。一个直观的方法是按前序或者反转的后序插入一个按中序排序的搜索树。已知前序和中序也可以还原一棵树,但是不能知道二叉树中一个节点唯一的子树是在左边还是右边。

事实上也可以把左右的顺序反过来。这些由根开始的遍历方法也适用于特定的一个子树。

森林

上一页
目录
下一章
A- 18 A+
默认 贵族金 护眼绿 羊皮纸 可爱粉 夜间