class Tree: def init(self, label, branches=[]): for b in branches: assert isinstance(b, Tree) self.label = label self.branches = list(branches) def is_leaf(self): return not self.branches def map(self, fn): self.label = fn(self.label) for b in self.branches: b.map(fn) def contains(self, e): if self.label == e: return True for b in self.branches: if e in b: return True return False def repr(self): if self.branches: branch_str = ', ' + repr(self.branches) else: branch_str = '' return 'Tree({0}{1})'.format(self.label, branch_str) def str(self): def print_tree(t, indent=0): tree_str = ' ' * indent + str(t.label) + "\n" for b in t.branches: tree_str += print_tree(b, indent + 1) return tree_str return print_tree(self).rstrip()
时间: 2024-03-04 07:53:33 浏览: 83
SVN的标准目录结构:trunk、branches、tags
这段代码定义了一个树的类 Tree,包括以下方法:
- init: 初始化树的标签(label)和子树(branches)。
- is_leaf: 判断树是否为叶子节点(即没有子树)。
- map: 对树中的每个标签应用给定的函数 fn。
- contains: 判断给定的元素 e 是否在树中。
- repr: 返回树的字符串表示形式,用于调试和测试。
- str: 返回树的字符串表示形式,用于输出和展示。
阅读全文