介绍
树
是一种经常用到的数据结构,用来模拟具有树状结构性质的数据集合。
树里的每一个节点有一个根植和一个包含所有子节点的列表。从图的观点来看,树也可视为一个拥有N 个节点
和N-1 条边
的一个有向无环图。
二叉树
是一种更为典型的树树状结构。如它名字所描述的那样,二叉树是每个节点最多有两个子树
的树结构,通常子树被称作“左子树”和“右子树”。
先上二叉树的数据结构:
1 | class Node{ |
二叉树的遍历
前序遍历
首先访问根节点,然后遍历左子树,最后遍历右子树。
1 | public static void preOrderRecur(Node head) { |
中序遍历
中序遍历是先遍历左子树,然后访问根节点,然后遍历右子树。
1 | public static void inOrderRecur(Node head) { |
后序遍历
后序遍历是先遍历左子树,然后遍历右子树,最后访问树的根节点。
1 | public static void posOrderRecur(Node head) { |
层序遍历
层序遍历就是逐层遍历树结构。
广度优先搜索
是一种广泛运用在树或图这类数据结构中,遍历或搜索的算法。 该算法从一个根节点开始,首先访问节点本身。 然后遍历它的相邻节点,其次遍历它的二级邻节点、三级邻节点,以此类推。
当我们在树中进行广度优先搜索时,我们访问的节点的顺序是按照层序遍历顺序的。
1 | //层次遍历 |