数据结构之树和图相关笔记

作者:离散木木夕

欢迎大家给出宝贵的建议!


数据结构之树和图相关笔记


树的定义:

    树(Tree)是n(n>=0)个节点的有限集。n=0时称为空树。

    在任意一棵非空树中:

    (1)有且仅有一个特定的称为根(Root)的节点;

    (2)当n>1时,其余节点可分为m(m>0)个互不相交的有限集T1、T2、......、Tm,其中每一个集合本身又是一棵树,并且称为根的子树(SubTree),如图所示。

                                            



二叉树的定义:

二叉树(Binary Tree)是n(n>=0)个节点的有限集合。该集合或者为空集(称为空二叉树),或者由一个根节点和两棵互不相交的、分别称为根节点的左子树和右子树的二叉树组成。如图所示:



树的遍历:【根节点的位置】

1.先序遍历:中、左、右

2.中序遍历:左、中、右

3.后序遍历:左、右、中

4.层序遍历


如下图所示:




(1)先序遍历的结果为:1245367

(2)中序遍历的结果为:4251637

(3)后序遍历的结果为:4526731

(4)层序遍历的结果为:1234567


平衡二叉树(AVL树):

1.空树是平衡二叉树。

2.如果一棵树不为空,并且其中所有的子树都满足各自的左子树与右子树的高度差的绝对值不超过1。


如下图:其中(1)(2)是平衡二叉树,(3)不是。

                   

                  (1)                                                      (2)                                                              (3)


搜索二叉树:

每棵子树的头结点的值逗比各自左子树上的所有节点值要大,也都比各自右子树上的所有节点值要小。【红黑树、平衡搜索二叉树(AVL树)等】





满二叉树:

除了最后一层的节点无任何子节点外,剩下每一层上的节点都有两个子节点。




层数为L,节点数为N: N=2^L-1,L=log2(N+1)



完全二叉树:

除最后一层外,其他的每一层的节点数都是满的。最后一层如果也满了,是一颗满二叉树,也是完全二叉树。最后一层如果不满,缺少的节点也全部集中在右边,那也是完全二叉树。


如下图所示:【都属于完全二叉树】


                           




图的遍历:

从某一定点出发访遍图中其余顶点,且每个顶点仅被访问一次。


1.深度优先遍历:也称为深度优先搜索,简称为DFS。优先往深处走【类似树的前序遍历】




从顶点A走遍所有的图顶点并作上标记【始终往右手边走】




2.广度优先遍历:又称为广度优先搜索,简称BFS。优先走最近的。【类似于树的层序遍历】

(2)是(1)的变形。


              

                      (1)                                                                              (2)


猜你喜欢

转载自blog.csdn.net/jonyhwang/article/details/80956840