資料結構 樹

2022-05-06 14:51:12 字數 2644 閱讀 3733

用樹結構實現簡單檔案系統

class node:

def __init__(self, name, type="dir"):

self.name = name

self.type = type # dir or file

self.children =

self.parent = none

def __repr__(self):

return self.name

class filesystemtree:

def __init__(self):

self.root = node('/')

self.now = self.root

def mkdir(self, name):

# name 以/結尾

if name[-1] != "/":

name += '/'

node = node(name)

node.parent = self.now

def ls(self):

return self.now.children

def cd(self, name):

# 只支援相對路徑

if name[-1] != "/":

name += '/'

for child in self.now.children:

if child.name == name:

self.now = child

return

raise valueerror("invalid dir")

tree = filesystemtree()

tree.mkdir("var/")

tree.mkdir("bin/")

tree.mkdir("usr")

print(tree.root.children)

tree.cd("bin/")

tree.mkdir("python/")

print(tree.ls())

class bitreenode:

def __init__(self, data):

self.data = data

self.lchild = none

self.rchild = none

一般有了中序和前序序列就能確定這顆樹長啥樣,由前序確定根節點,中序確定左右子樹

# 前序遍歷

def pre_order(root):

if root:

print(root.data, end=',')

pre_order(root.lchild)

pre_order(root.rchild)

# 中序遍歷

def in_order(root):

if root:

in_order(root.lchild)

print(root.data, end=',')

in_order(root.rchild)

# 後序遍歷

def post_order(root):

if root:

post_order(root.lchild)

post_order(root.rchild)

print(root.data, end=',')

# 層級遍歷

def level_order(root):

queue = deque()

while len(queue) > 0:

node = queue.popleft()

print(node.data, end=',')

if node.lchild:

if node.rchild:

# pre_order(root)

# in_order(root)

# post_order(root)

level_order(root)

資料結構 樹

樹的概念 1.家族樹 在現實生活中,有入如下血統關係的家族可用樹形圖表示 張源有三個孩子張明 張亮和張麗 張明有兩個孩子張林和張維 張亮有三個孩子張平 張華和張群 張平有兩個孩子張晶和張磊。以上表示很像一棵倒畫的樹。其中 樹根 是張源,樹的 分支點 是張明 張亮和張平,該家族的其餘成員均是 樹葉 而...

資料結構 樹

1 定義 樹是一種非線性結構,是一種一對多的資料結構。分析樹的結構,我們用遞迴的方法,根結點下面又可以看做是子樹。2 樹的儲存結構 我們一般用孩子兄弟法儲存。也就是把乙個結點的左邊第乙個孩子放在此結點的左邊孩子,把此結點的右兄弟放在此結點的右邊孩子。這樣就產生了二叉樹。二叉樹和樹可以相互對應。3 二...

資料結構 樹

二叉樹性質回顧 滿二叉樹 完全二叉樹等 給定一棵二叉樹,要求分層遍歷該二叉樹,即從上到下按層次訪問該樹,每一層單獨輸出一行,每一層要求訪問的順序為從左到右。我們在遍歷的過程中將該層節點的孩子節點壓入乙個佇列,這樣就可以實現從上到下一層一層地遍歷該二叉樹。層序遍歷 並分層列印 如果不用分層的話只用佇列...