Created
February 22, 2016 00:55
-
-
Save durcana/310adc1d8e25b22e1d15 to your computer and use it in GitHub Desktop.
Trying to create generate random tree using Node objects. Code not working yet but here's my progress. Skips every other node in node_children, and dfs not working yet.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import random | |
class Node: | |
def __init__(self, name): | |
self.name = name | |
self.children = [] | |
self.visited = False | |
def add_child(self, new_node): | |
self.children.append(new_node) | |
def node(self): | |
return self.name | |
def get_children(self): | |
return [child.name for child in self.children] | |
def create_tree(): | |
# not sure of a better way to create these objects. Tried iterating but got confused. | |
node0 = Node(0) | |
node1 = Node(1) | |
node2 = Node(2) | |
node3 = Node(3) | |
node4 = Node(4) | |
node5 = Node(5) | |
node6 = Node(6) | |
node7 = Node(7) | |
node8 = Node(8) | |
node9 = Node(9) | |
node_list = [node0] | |
node_children = [node1, node2, node3, node4, node5, node6, node7, node8, node9] | |
# why is this skipping every other variable in node_children? | |
for node in node_children: | |
parent = random.choice(node_list) | |
parent.add_child(node) | |
node_list.append(node) | |
node_children.remove(node) | |
for node in node_list: | |
print(node.node(), node.get_children()) | |
return node_list | |
def dfs(list_of_nodes, goal_node, current_node): | |
if current_node not in list_of_nodes: | |
current_node = list_of_nodes[0] | |
if current_node == goal_node: | |
return goal_node | |
if current_node.visited == False: | |
current_node.visited = True | |
for child in current_node.children: | |
if child.visited == False: | |
return dfs(list_of_nodes, goal_node, child) | |
for node in list_of_nodes: | |
if current_node in node.children: | |
return dfs(list_of_nodes, goal_node, node) | |
print(goal_node, 'is not in this tree') | |
node_list = create_tree() | |
print(dfs(node_list, 3, node_list[0])) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment