准备
二叉树(Binary Tree)是一种特殊的树型结构,它的特点是每个结点至多有两棵子树(即二叉树中不存在度大于2的结点),且二叉树的子树有左右之分,其次序不能任意颠倒(有序树)。在 Python 中,已有别人实现好的二叉树模块,即 binarytree,但是本文主要是学习二叉树遍历,就不介绍了。二叉树相关内容可自行学习。
深度优先遍历:沿着每一个分支路径进行深入访问。前序、中序、后序都是深度优先遍历的特例。可以用递归实现,非递归一般借助Stack栈容器。
广度优先遍历:又叫层次遍历,对每一层依次访问。可以借助Queue队列容器来实现。
先定义和创建一颗二叉树
class Node():
''' 定义节点 '''
def __init__(self, value, left=None, right=None):
''' 构造节点
:param value:节点值
:param left:左子树
:param right:右子树
'''
self.value = value
self.left = left
self.right = right
class BinaryTree():
''' 二叉树 '''
def __init__(self, args: list):
self.__root = None # 根节点
self.create(args)
def create(self, args: list):
''' 根据参数构建一棵二叉树,这里我们用最简单的层级式构建,生成完全二叉树
:param args:参数列表,类型为list
'''
if not isinstance(args, list):
# 类型判断
# raise ValueError('Parameter type must be list')
return
list_len = len(args)
if list_len
关注
打赏