Passed
Push — master ( 500623...be817c )
by Xianshun
01:43
created

DepthFirstOrder   A

Complexity

Total Complexity 7

Size/Duplication

Total Lines 23
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 23
rs 10
wmc 7

3 Methods

Rating   Name   Duplication   Size   Complexity  
A postOrder() 0 2 1
A __init__() 0 8 3
A dfs() 0 6 3
1
from pyalgs.data_structures.commons.stack import Stack
2
3
4
class DepthFirstOrder(object):
5
6
    marked = None
7
    reversePostOrder = None
8
9
    def __init__(self, G):
10
        self.reversePostOrder = Stack.create()
11
        vertex_count = G.vertex_count()
12
        self.marked = [False] * vertex_count
13
14
        for v in range(vertex_count):
15
            if not self.marked[v]:
16
                self.dfs(G, v)
17
18
    def dfs(self, G, v):
19
        self.marked[v] = True
20
        for w in G.adj(v):
21
            if not self.marked[w]:
22
                self.dfs(G, w)
23
        self.reversePostOrder.push(v)
24
25
    def postOrder(self):
26
        return self.reversePostOrder.iterate()