python 二叉树

用python实现二叉树

一、定义数据结构

class TreeNode:
    def __init__(self, val=0, left=None, right=None):
        self.val = val
        self.left = left
        self.right = right

二、初始化数据

示例数据如图所示
在这里插入图片描述

s1 = TreeNode(4)
s2 = TreeNode(5)
s3 = TreeNode(2,s1,s2)
s4 = TreeNode(6)
s5 = TreeNode(7)
s6 = TreeNode(3,s4,s5)
root = TreeNode(1,s3,s6)

三、遍历方法

3.1前序遍历

def pre(root,res):
    if not root:
        return
    global t
    t = res+str(root.val)
    pre(root.left,t)
    pre(root.right,t)
    return(t)

3.2后序遍历

def post(root,res):
    if not root:
        return
    global t
    t = res
    post(root.left,t)
    post(root.right,t)
    t = t+str(root.val)
    return(t)

3.3中序遍历

def mid(root,res):
    if not root:
        return
    global t
    t = res
    mid(root.left,t)
    t = t+str(root.val)
    mid(root.right,t)
    return(t)

3.4层次遍历

def lev(root):
    if not root:
        return
    global t
    t = ''
    stack = []
    stack.append(root)
    while stack:
        node = stack.pop(0)  # 实现先进先出
        t = t+str(node.val)
        if node.left:
            stack.append(node.left)
        if node.right:
            stack.append(node.right)
    return(t)

3.5调用及执行结果

res = ''
print(pre(root,res))
print(mid(root,res))
print(post(root,res))
print(lev(root))

执行结果如下:
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值