ディレクトリの n-ary ツリーを表すために、python で答えを探しています。フォルダの N 分木が良い例だと思います。これが私のコードです:
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分木の特定のノードを埋める方法
- 構築された N 分木をトラバースする方法
1、2、3への回答。
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)