基础知识
定义:
应用:
树的种类实在是太多,关于树的算法题也是贼多,这一篇文章不可能全部介绍完,我们需要具体问题再具体分析。这里主要介绍的是二叉树,并且只介绍树的一些最基础的几个算法。我们先来看个图
节点类
1,前序遍历
他的访问顺序是:根节点→左子树→右子树
所以上图前序遍历的结果是:A→B→D→E→C→F
访问顺序如下
代码如下
非递归的写法
2,中序遍历
他的访问顺序是:左子树→根节点→右子树
所以上图前序遍历的结果是:D→B→E→A→F→C
访问顺序如下
代码如下
非递归的写法
3,后序遍历
他的访问顺序是:左子树→右子树→根节点
所以上图前序遍历的结果是:D→E→B→F→C→A
访问顺序如下
代码如下
非递归的写法
或者
4,BFS(宽度优先搜索(又称广度优先搜索))
他的访问顺序是:先访问上一层,在访问下一层,一层一层的往下访问
所以上图前序遍历的结果是:A→B→C→D→E→F
访问顺序如下
代码如下
递归的写法
如果想把遍历的结果存放到list中,我们还可以这样写
5,DFS( 深度优先搜索 )
他的访问顺序是:先访根节点,然后左结点,一直往下,直到最左结点没有子节点的时候然后往上退一步到父节点,然后父节点的右子节点在重复上面步骤……
所以上图前序遍历的结果是:A→B→D→E→C→F
访问顺序如下
代码如下
递归的写法
如果喜欢这篇文章还可以关注微信公众号“ 数据结构和算法 ”,查看更多的算法题