Example #1
0
 def levelOrder(self,a):
     q = Queue()
     r = a
     while r is not None:
         print(r.root.data)
         if r.root.left is not None:
             q.add(r.root.left)
         if r.root.right is not None:
             q.add(r.root.right)
         if q.isEmpty():
             print("empty")
             r = None
         else:
             r = q.delete()
Example #2
0
 def levelOrder(self, a):
     q = Queue()
     r = a
     while r is not None:
         print(r.root.data)
         if r.root.left is not None:
             q.add(r.root.left)
         if r.root.right is not None:
             q.add(r.root.right)
         if q.isEmpty():
             print("empty")
             r = None
         else:
             r = q.delete()
Example #3
0
 def breadthTraverse(self, index):
     if index == -1:
         return
     q = Queue()
     print(self.vertexes[index], end='')
     traversed.append(index)
     q.insert(index)
     while q.empty() == False:
         p = self.vertexes[q.delete()]
         if self.firstAdj(p) == -1:
             continue
         tmp = self.__locate(self.firstAdj(p))
         while tmp not in traversed:
             print(self.vertexes[tmp], end='')
             traversed.append(tmp)
             q.insert(tmp)
             if self.nextAdj(self.vertexes[tmp], p) == -1:
                 break
             tmp = self.__locate(self.nextAdj(self.vertexes[tmp], p))
Example #4
0
class BFS:
    def __init__(self) -> None:
        self.alist = None
        num = self.initilize()
        self.visited = [-1] * num
        self.Queue = Queue(10 * num)

    def initilize(self):
        num = 5
        self.alist = AList(num)
        self.alist.insert(0, 2)
        self.alist.insert(0, 3)
        self.alist.insert(1, 3)
        self.alist.insert(1, 4)
        self.alist.insert(2, 3)
        self.alist.insert(3, 4)

        self.alist.print_graph()
        return num

    def BFS_Start(self, node):
        print("BFS Sequence is: ==> ", end="")
        self.visited[node] = 0
        print(node, "==>", end="")
        k = self.alist.aL[node]
        while k:
            self.Queue.insert(k.nodeVal)
            k = k.next

        self.visited[node] = 1

        while not self.Queue.isEmpty:
            u = self.Queue.delete()
            if self.visited[u] == -1:
                self.visited[u] = 0
                print(u, end="==>")
                k = k = self.alist.aL[u]
                while k:
                    self.Queue.insert(k.nodeVal)
                    k = k.next
                self.visited[u] = 1