python中简单二叉树的实现
本文最后更新于 122 天前,其中的信息可能已经有所发展或是发生改变。
# DPS
# list的支线形式建树
import math


# 2012-2021 Wenjiachen 
class Tree:
    def __init__(self, list):
        self.treedata = []
        self.list = list

    def buildTree(self):
        list = self.list
        tree = []  # 树
        lens = len(list)
        slens = lens
        temp = []  # 暂存建树用
        path = math.ceil(math.log(lens, 2)) + 1  # 1个数 0次幂
        step = 1  # 当前所在行,以行作为基本的步数
        j = 0  # 层长度计算器
        l = 0  # 长度计步器
        for i in range(max(lens, int(pow(2, path - 1)))):
            # 这一项是对相关进行遍历准备建树,为了防止输入没有达到标准建树标准的
            # 长度,选取和标准长度对比最长的项,其余补齐null
            if l >= lens:
                temp.append(None)
            else:
                temp.append(list[i])
            j += 1
            l += 1
            if j == pow(2, step - 1):  # 该层已满
                j = 0
                tree.append(temp.copy())
                temp = []
                step += 1
        self.treedata = tree.copy()

    def treepath(self):
        return len(self.treedata)

    def isexist(self, x, y):
        try:
            a = self.treedata[x][y]
            return True
        except:
            return False

    def getnext(self, x, y, s):
        return self.treedata[x + 1][y * 2 - 1 + s]



自己写了一个类用来做树,也许以后用不到(真正做题还真的从写类开始啊……)

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇