农民代表
- 积分
- 8712
- 大米
- 颗
- 鳄梨
- 个
- 水井
- 尺
- 蓝莓
- 颗
- 萝卜
- 根
- 小米
- 粒
- 学分
- 个
- 注册时间
- 2019-3-22
- 最后登录
- 1970-1-1
|
随手写了一个,能处理输入不按职位高低顺序
- class TreeNode:
- def __init__(self, label, name):
- self.label = label
- self.name = name[:]
- self.reports = []
- def add(self, report):
- self.reports.append(report)
- class Solution:
- def construct_reporting_tree(self, inputs):
-
- root, tbl = None, {}
- while inputs:
- deferred = []
- for label, name, parent in inputs:
- if parent != 0 and parent not in tbl:
- deferred.append((label, name, parent))
- else:
- node = TreeNode(label, name)
- tbl[label] = node
- if parent != 0:
- parent_node = tbl[parent]
- parent_node.add(node)
- else:
- root = node
- inputs = deferred[:]
- self.pretty_print_reporting_tree(root)
- def pretty_print_reporting_tree(self, root, tabs = 0):
-
- if not root: return
- print("{}{}".format(" "*tabs, root.name))
- for report in root.reports:
- self.pretty_print_reporting_tree(report, tabs+2)
- if __name__ == "__main__":
- Solution().construct_reporting_tree([(1,'Andy',0),(2,'Bob',1),(3,'Cindy',2),(4,'David',1),(5,'Eric',4)])
- Solution().construct_reporting_tree([(4,'David',1),(3,'Cindy',2),(5,'Eric',4),(1,'Andy',0),(2,'Bob',1)])
复制代码 |
|