python代码实现二叉树结构,实现前、中、后序遍历方法

1.实现树结构的类,树的节点有三个私有属性 左指针 右指针 自身的值

#!/usr/bin/env python3
#-*-coding=utf-8-*-
'python实现树结构'
__author__='km'
class Node(object):
    def __init__(self,data=None):
        self._data = data
        self._left = Node #可以这里定义左右节点
        self._right = Node
    def set_data(self,data):
        self._data = data
    def get_data(self):
        return self._data
    def set_left(self,node):  #需要注意这里是node
        self._left = node
    def get_left(self):
        return self._left
    def set_right(self,node):
        self._right = node
    def get_right(self):
        return self._right
if __name__ == '__main__':
    root_node = Node('a')  #这里需要传递data进去
    left_node = Node('b')  #这里还需要实例化左右节点
    right_node = Node('c')
    root_node.set_left(left_node)  #给根节点的左指针赋值,使其指向左子节点
    root_node.set_right(right_node) #给根节点的右指针赋值,使其指向右子节点
    print(root_node.get_data(),left_node.get_data(),right_node.get_data())



运行结果如下:

二、实现前中后序遍历方法

#!/usr/bin/env python3
#-*-coding=utf-8-*-
'递归实现前,中,后序的二叉树遍历'
__author__='km'
class Node(object):
    def __init__(self,data=None,left=None,right=None):
        self._data = data
        self._left = left
        self._right = right
#前序遍历,根左右
def ProOrder(tree): #这里传入一个tree,需要注意这个def不在class里
    if tree == None:
        return False
    print(tree._data)
    ProOrder(tree._left)
    ProOrder(tree._right)
#中序遍历,左根右
def MidOrder(tree):
    if tree == None:
        return False
    MidOrder(tree._left)  #先对左节点进行操作,左节点递归到头然后输出
    print(tree._data)
    MidOrder(tree._right)
#后续遍历,左右根
def LastOrder(tree):
    if tree == None:
        return False
    LastOrder(tree._left)
    LastOrder(tree._right)
    print(tree._data)


if __name__=='__main__':
    #这里需要注意树的创建,都在Node里。另外需要注意括号少了没
    tree = Node('a',Node('b',Node('c'),Node('d')),Node('e',Node('f'),Node('g')))
    ProOrder(tree)
    MidOrder(tree)

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值