#!/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)