数据结构基础知识点

142 阅读2分钟


一:二叉树

1:所谓二叉树,是一种树的特殊结果。在二叉树中每个节点最多只能有两个子节点。二叉树中最常见的操作就是遍历,即按照某一顺序访问树中的所有节点。树的遍历有3种方式:

1):先序遍历(前序遍历):先访问根节点,再访问左子节点,最后访问右子节点
2):中序遍历:先访问左子节点,再访问根节点,最后访问右子节点
3):后序遍历:先访问左子节点,再访问右子节点,最后访问根节点
这三种遍历方式都是按照对根的访问先后顺序进行区分的,且这三种遍历都有递归和循环两种不同的实现方式。每种遍历的递归实现都要比循环实现简单得多。

2:树的广度优先和深度优先

1:广度优先:
其过程检验来说是对每一层节点依次访问,访问完一层进入下一层,而且每个节点只能访问一次。先往队列中插入左节点,再插右节点,这样出队就是先左节点后右节点了。广度优先遍历树,需要用到队列(Queue)来存储节点对象,队列的特点就是先进先出。

2:深度优先(有递归和非递归两种实现方式):
其过程简要来说是对每一个可能的分支路径深入到不能再深入为止,而且每个节点只能访问一次。深度优先遍历各个节点,需要使用到栈(Stack)这种数据结构。stack的特点是是先进后出。整个遍历过程如下: 先往栈中压入右节点,再压左节点,这样出栈就是先左节点后右节点了。

3:二叉树的特例

二叉树有很多特例,下面将介绍三种二叉树的特例:
1):二叉搜索树:
在二叉搜索树中,左子节点总是小于或者等于根节点,而右子节点总是大于或者等于根节点。我们可以在平均时间为O(logn)的时间内,根据数值在二叉搜索树中找到一个目标节点。
2):堆:
堆分为最大堆和最小堆,最大堆中根节点的值最大,最小堆中根节点的值最小。所以很多需要查找最大值和最小值的问题都可以用堆来解决。
3):红黑树:
红黑树把树中的节点定义为红,黑两种颜色,并通过规则确保从根节点到红节点的最长路径的长度不超过最短路径的两倍。

栈和队列