您当前的位置: 首页 >  Python

龚建波

暂无认证

  • 4浏览

    0关注

    313博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Python二叉树的遍历:深度优先(前序、中序、后序)和广度优先(层次)

龚建波 发布时间:2020-04-09 22:24:50 ,浏览量:4

准备

二叉树(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             
关注
打赏
1655829268
查看更多评论
0.1338s