1. Drzewo

2. Definicja drzewa

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
class Node:
 def __init__(self, value):
     self.value = value
     self.left = None
     self.right = None
 def insert(self, value):
     if value <= self.value:
         if self.left is None:
             self.left = Node(value)
         else:
             self.left.insert(value)
     else:
         if self.right is None:
             self.right = Node(value)
         else:
             self.right.insert(value)
 def __repr__(self):
     return '<Node: value: {}'.format(str(self.value))
 def search(self, value):
     if self.value == value:
         return True
     elif value < self.value:
         if isinstance(self.left, type(None)):
             return False
         if self.left.value == None:
             return False
         else:
             return self.left.search(value)
     else:
         if isinstance(self.right, type(None)):
             return False
         if self.right.value == None:
             return False
         else:
             return self.right.search(value)

 def __contains__(self, value):
     return self.search(value)


 def in_order_traversal(self):
     if self.left != None:
         self.left.in_order_traversal()
     print(self.value)

     if self.right != None:
         self.right.in_order_traversal()
 def get_height(self):
     height = 1
     if not isinstance(self.left, type(None)):
         height_left = self.left.get_height()
     else:
         height_left = 0
     if not isinstance(self.right, type(None)):
         height_right = self.right.get_height()
     else:
         height_right = 0

     return height + max(height_left, height_right)
 def __len__(self):
     return self.get_height()

 a = Node(6)
 len(a)

Hint

tree