准备
二叉树(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
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?