Advertisement
Guest User

Untitled

a guest
Mar 23rd, 2018
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.83 KB | None | 0 0
  1.  
  2. class Node(object):
  3. def __init__(self, value, parent = None):
  4. self._value = value
  5. self._children = []
  6. self._parent = parent
  7.  
  8.  
  9. def get_value(self):
  10. return self._value
  11.  
  12. def get_children(self):
  13. return self._children
  14.  
  15. def get_parent(self):
  16. return self._parent
  17.  
  18. def set_parent(self, parent_node):
  19. self._parent = parent_node
  20.  
  21. def add_child(self, new_node):
  22. self._children.append(new_node)
  23.  
  24. def is_leaf(self):
  25. if self._children == []:
  26. return True
  27. else:
  28. return False
  29.  
  30. def is_root(self):
  31. if self._parent == None:
  32. return True
  33. else:
  34. return False
  35.  
  36. def depth(self):
  37. if self.is_root() == False:
  38. return 1 + self._parent.depth()
  39. else:
  40. return 1
  41.  
  42. def dfs(self):
  43. print self._value
  44. if self.is_leaf():
  45. pass
  46. else:
  47. for child in self._children:
  48. child.dfs()
  49.  
  50. def height(self):
  51. tmp = []
  52. if self.is_leaf():
  53. return 1
  54. else:
  55. for child in self._children:
  56. tmp.append(child.height())
  57. return 1 + max(tmp)
  58.  
  59.  
  60. class Tree(object):
  61. def __init__(self, root = Node(0)):
  62. self._root = root
  63.  
  64. def add_node(self, node, new_node):
  65. node.add_child(new_node)
  66. new_node.set_parent(node)
  67.  
  68.  
  69. def height(self):
  70. return self._root.height()
  71.  
  72.  
  73.  
  74.  
  75.  
  76.  
  77. if __name__ == '__main__':
  78. koren = Node(1)
  79. stablo = Tree(koren)
  80. n1 = Node(2)
  81. n2 = Node(3)
  82. n3 = Node(4)
  83. n4 = Node(5)
  84. stablo.add_node(koren, n1)
  85. stablo.add_node(koren,n2)
  86. stablo.add_node(n2,n3)
  87. stablo.add_node(n3,n4)
  88. print stablo.height()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement