Computer >> Máy Tính >  >> Lập trình >> Python

Chương trình Python để chỉ in các nút trong Left SubTree

Khi được yêu cầu in các nút trong cây con bên trái, một lớp có thể được tạo ra bao gồm các phương thức có thể được xác định để đặt nút gốc, thực hiện theo thứ tự duyệt, chèn các phần tử vào bên phải của nút gốc, bên trái của nút gốc, v.v. Một thể hiện của lớp được tạo và các phương thức có thể được sử dụng để thực hiện các hoạt động bắt buộc.

Dưới đây là một minh chứng về điều tương tự -

Ví dụ

class BinaryTree_struct:
   def __init__(self, data=None):
      self.key = data
      self.left = None
      self.right = None

   def set_root(self, data):
      self.key = data

   def inorder_traversal(self):
      if self.left is not None:
         self.left.inorder_traversal()
      print(self.key, end=' ')
      if self.right is not None:
         self.right.inorder_traversal()

   def insert_at_left(self, new_node):
      self.left = new_node

   def insert_at_right(self, new_node):
      self.right = new_node

   def search_elem(self, key):
      if self.key == key:
         return self
      if self.left is not None:
         temp = self.left.search_elem(key)
         if temp is not None:
            return temp
      if self.right is not None:
         temp = self.right.search_elem(key)
         return temp
      return None

   def print_left_part(self):
      if self.left is not None:
         self.left.inorder_traversal()

my_instance = None

print('Menu (this assumes no duplicate keys)')
print('insert <data> at root')
print('insert <data> left of <data>')
print('insert <data> right of <data>')
print('left')
print('quit')

while True:
   my_input = input('What operation would you do ? ').split()

   operation = my_input[0].strip().lower()
   if operation == 'insert':
      data = int(my_input[1])
      new_node = BinaryTree_struct(data)
      suboperation = my_input[2].strip().lower()
      if suboperation == 'at':
         my_instance = new_node
      else:
         position = my_input[4].strip().lower()
         key = int(position)
         ref_node = None
         if my_instance is not None:
            ref_node = my_instance.search_elem(key)
         if ref_node is None:
            print('No such key')
            continue
         if suboperation == 'left':
            ref_node.insert_at_left(new_node)
         elif suboperation == 'right':
            ref_node.insert_at_right(new_node)

   elif operation == 'left':
      print('Nodes of the left subtree are : ', end='')
      if my_instance is not None:
         my_instance.print_left_part()
         print()

   elif operation == 'quit':
      break

Đầu ra

Menu
Menu (this assumes no duplicate keys)
insert <data> at root
insert <data> left of <data>
insert <data> right of <data>
left
quit
What operation would you do ? insert 5 at root
What operation would you do ? insert 6 left of 5
What operation would you do ? insert 8 right of 5
What operation would you do ? left
Nodes of the left subtree are : 6
What operation would you do ? quit
Use quit() or Ctrl-D (i.e. EOF) to exit

Giải thích

  • Lớp 'BinaryTree_struct' với các thuộc tính bắt buộc được tạo.

  • Nó có một chức năng ‘init’ được sử dụng để gán các nút bên trái và bên phải cho “Không có”.

  • Phương thức ‘set_root’ được định nghĩa để giúp đặt giá trị gốc của cây nhị phân.

  • Nó có phương thức ‘insert_at_right’ giúp thêm các phần tử vào các nút bên phải của cây.

  • Nó có phương thức ‘insert_at_left’ giúp thêm các phần tử vào các nút bên trái của cây.

  • Một phương thức khác có tên là ‘inorder_traversal’ thực hiện theo thứ tự duyệt.

  • Phương thức có tên ‘search_elem’ được xác định, giúp tìm kiếm một phần tử cụ thể.

  • Một phương thức khác có tên ‘print_left_part’ được định nghĩa, giúp chỉ hiển thị phần bên trái của cây nhị phân trên bảng điều khiển.

  • Một phiên bản được tạo và gán cho 'Không có gì'.

  • Đầu vào của người dùng được sử dụng cho thao tác cần được thực hiện.

  • Tùy thuộc vào lựa chọn của người dùng, hoạt động được thực hiện. • Kết quả phù hợp được hiển thị trên bảng điều khiển.