usr bin python -coding utf-8- напишите функци осуществляющую операцию

 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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
#!/usr/bin/python
#-*-coding:utf-8-*-
#напишите функци., осуществляющую операцию обрезки ветви дерева, начиная с указанного элемента вниз
class Node:
"""docstring for ClassName"""
# def __init__(self, value, children = None):
# self.value = value
# self.children = children
def __init__(self, data = None, lchild = None, rchild = None, root = None, side = 0):
self.data = data
self.lchild = lchild
self.rchild = rchild
self.root = root
self.side = side
def __str__(self):
return 'Node ['+str(self.data)+']'
class Tree:
def __init__(self):
self.nodes = []
self.root = None
self.nodes.append(None)
def clear(self):
self.root = t.my_insert(None,0,0)
def my_insert(self, root_node, data, position):
temp = Node(0, None, None, root_node, position)
temp.data = data
if root_node == None:
return temp
else:
if position == 0:
root_node.lchild = temp
return temp
else:
root_node.rchild = temp
return temp
def preorder(self,node):
if node!=None:
print (" %d " % node.data)
self.preorder(node.lchild)
self.preorder(node.rchild)
def remove_elem(self,pos):
if pos == 0:
self.root = None
return
self.nodes[pos].lchild = None
self.nodes[pos].rchild = None
if(self.nodes[pos].side == 0):
self.nodes[pos].root.lchild = None
else:
self.nodes[pos].root.rchild = None
#создание дерева
t = Tree()
t.root = t.my_insert(t.root,1,0)
t.nodes.append(t.my_insert(t.root, 2, 0))
t.nodes.append(t.my_insert(t.root, 3, 1))
t.nodes.append(t.my_insert(t.nodes[1], 4, 0))
t.nodes.append(t.my_insert(t.nodes[2], 5, 1))
t.nodes.append(t.my_insert(t.nodes[2], 6, 0))
t.nodes.append(t.my_insert(t.nodes[4], 7, 0))
#обход дерева в глубину
t.preorder(t.root);
print "-", t.root
t.remove_elem(0)
t.preorder(t.root)