Прикреплённый файл «2013-02-08.printtree.py»
Загрузка 1 #!/usr/bin/env python
2 # coding: utf
3 '''
4 Ввести дерево в виде списка рёбер
5 Вывести его разборчиво :)
6 '''
7
8 # Введём в виде списка Python
9 Tree=input()
10
11 # Найдём корень
12 outs=set(p[0] for p in Tree)
13 ins=set(p[1] for p in Tree)
14 # Количество вершин
15 N=max(outs|ins)+1
16 # Построим матрицу смежности
17 Nabers=[[0]*N for i in xrange(N)]
18 for i,j in Tree:
19 Nabers[i][j]+=1
20
21 def printtree(Nabers, root, prefix="", add="| ", nxt=".", last=False):
22 '''Напечатать дерево.
23 Перед каждым элементом печатать prefix
24 В каждом поддереве после prefix печатать add
25 (или пробелы, если текущее дерево було последним)'''
26 Next=[j for j in xrange(N) if Nabers[root][j]]
27 print "{0}{1}{2}".format(prefix,root,Next and nxt or "")
28 for r in Next:
29 printtree(Nabers, r, prefix+(last and " "*len(add) or add), add, nxt, r==Next[-1])
30
31 # если root не из одного элемента, это не дерево
32 root=(outs-ins).pop()
33 w=len(str(N))
34 printtree(Nabers, root, "", "|"+w*" ", (w-1)*"-"+".", last=True)
Прикреплённые файлы
Для ссылки на прикреплённый файл в тексте страницы напишите attachment:имяфайла, как показано ниже в списке файлов. Не используйте URL из ссылки «[получить]», так как он чисто внутренний и может измениться.- [получить | показать] (2013-02-15 15:23:11, 1.9 KB) [[attachment:2013-02-08.drawgraph-dumb.py]]
- [получить | показать] (2013-02-15 15:22:48, 8.8 KB) [[attachment:2013-02-08.graph-gen.py]]
- [получить | показать] (2013-02-15 15:22:25, 1.2 KB) [[attachment:2013-02-08.printtree.py]]
Вам нельзя прикреплять файлы к этой странице.