今天为大家带来的是二叉树的遍历算法,主要是二叉树广度遍历的算法。对于二叉树的基础问题可以参考这里:
二叉树(一)-基础知识
二叉树的遍历分为两种,一种是深度遍历,一种是广度遍历。通俗一点的说,深度遍历是递归调用的思想,尽可能深的探索子树,然后再尽可能深的探索另一棵子树。而广度遍历就是依次读取同一层的节点,直到最末端。
以下面的二叉树为例:
对于深度遍历,就是每次探索到最深的子树,下图为先序遍历的第一次探索:
对于广度遍历,先探索深度为1的那层数据,再探索深度为2的数据,再再探索深度为3的数据,再再再探索深度为4的数据:
二叉树的深度遍历
深度遍历根据根节点的访问顺序又可以分为:
先序遍历:父节点>左子树->右子树
中序遍历:左子树->父节点->右子树
后序遍历:左子树->右子树->父节点
# Definition for a binary tree node.
class TreeNode:
# 构造函数
def __init__(self, x):
self.val = x # 自身节点(父节点)
self.left = None # 左子节点