二叉树遍历:前序、中序、后续、层次遍历(python)

本文详细介绍了二叉树的前序、中序、后序和层次遍历方法,包括递归和非递归两种实现方式,并探讨了遍历过程中涉及的数据结构如链表、堆栈和队列。同时,提供了动态演示以帮助理解各种遍历规则。
摘要由CSDN通过智能技术生成

 二叉树的遍历是指从根结点出发,按照某种次序依次访问二叉树中所有结点,使得每个结点被访问一次且仅被访问一次。

为什么研究二叉树的遍历?

因为计算机只会处理线性序列,而我们研究遍历,就是把树中的结点变成某种意义的线性序列,这给程序的实现带来了好处

数据结构定义

在二叉树遍历过程中用到了链表、堆栈、队列
节点定义

class node: #用链表实现队列 只用来记录节点
    def __init__(self):
        self.data = None
        self.next = None

队列定义

class queue():
    def __init__(self):
        self.front = node()
        self.rear = node()
        self.front = None
        self.rear = None
    def push(self,data):
        # print('加入新节点',data.data)
        newnode = node()
        newnode.data = data
        newnode.next = None
        if self.rear == None:
            self.front = newnode  #定义头指针
        else:
            self.rear.next = newnode #链接下一个指针
        self.rear = newnode #和front指向同一个对象
    def pop(self):
        if self.front == None:
            print('空队列')
        else:
            self.front = self.front.next
    def get_front(self):
        if self.front == None:
            print('空队列')
        else:
            return self.front

堆栈定义

class stack():#用列表实现堆栈
    def __init__(self):
        self.top = node()
        self.top = None
    def push(self,data):
        newnode = node()
        newnode.data = data
        newnode.next = self.top
        self.top = newnode
    def pop(self):
        if self.top is None:
            print('空堆栈')
        else:
            temp = self.top
            self
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值