我正在尋找一個答案在Python中代表一個n-ary樹的目錄。 我認爲文件夾的N-ary樹就是一個很好的例子。這裏是我的代碼:Python的n-ary樹的目錄
class Node(object):
def __init__(self, data):
self.data = data
self.children = []
n = Node(sys.argv[1])
def walktree(top): # recurse from "/top/"
X = [] # clear record
for f in os.listdir(top):
pathname = os.path.join(top,f)
mode = os.stat(pathname)[ST_MODE]
if S_ISDIR(mode): # It's a directory
X.append(pathname) #
walktree(pathname) # recursion
X.sort()
n.add_child(X)
我的問題是:
- 這段代碼是否正確?
- 如何填寫如何遍歷構造N叉樹
答案1,2,3- N叉樹
def dirwalk(top): # build an n_ary tree
n = Node(top) # ONE Node per folder
for f in os.listdir(top): # loop over the current dir
pathname = os.path.join(top,f) # dir + fname
mode = os.stat(pathname)[ST_MODE]
if S_ISDIR(mode): # It's a directory
ptr = dirwalk(pathname) # go down
n.add_child(ptr) # add pointer to node
return n # return Node
def traverse(n): # traverse buildt tree
for p in n: # loop over children
print p.data
traverse(p.children)
那麼究竟什麼是你的問題? –
你知道你可以使用'os.walk()'方法,它也可以像這樣工作嗎? –
@IT:其實'os.walk'比這個更普遍。但是我們當然可以在它上面建立這個'walktree'函數。 –