主要内容:
- 二叉树遍历(先序、中序、后序、宽度优先遍历)的迭代实现和递归实现;
- 二叉树的深度,二叉树到叶子节点的所有路径。
首先,先定义二叉树类(python3),代码如下:
class
内容1:二叉树的遍历
二叉树的遍历分深度优先遍历(DFS)和宽度优先遍历(BFS)。其中深度优先遍历又分为先序遍历,中序遍历,后序遍历。因为二叉树是递归类数据结构,因此大部分关于二叉树的操作都可以通过递归实现。下面将介绍二叉树几种遍历的实现代码以及思路。
1.1 先序遍历:
遍历顺序:根节点——左子节点——右子节点(A-B-D-E-C-F)。
递归实现:
def
迭代实现:
def
1.2 中序遍历
遍历顺序:左子节点——根节点——右子节点(D-B-E-A-C-F)
递归实现:
def
迭代实现:
def
1.3 后序遍历
遍历顺序:左子节点——右子节点——根节点(D-E-B-F-C-A)
递归实现:
def
迭代实现:
def
1.4 层次遍历
遍历顺序:一层一层的遍历(A-B-C-D-E-F)
迭代实现:
def
内容2:基本操作
2.1 二叉树的最大深度
基本思路就是递归,当前树的最大深度等于(1+max(左子树最大深度,右子树最大深度))。代码如下:
def
2.2 二叉树的最小深度
最小深度是从根节点到最近叶子节点的最短路径上的节点数量。可以通过递归求左右节点的最小深度的较小值,也可以层序遍历找到第一个叶子节点所在的层数。
递归方法:
class
迭代方法:
class
2.3 二叉树的所有路径
根节点到叶子节点的所有路径。
def