Python程序查找树中所有节点的和


当需要获取树中所有节点的和时,会创建一个名为“Tree_structure”的类,定义设置根值和添加其他值的方法。它还具有一种方法可以确定树结构中所有元素的和。提供了用户可以选择的多项选项。根据用户的选择,对树元素执行操作。

以下是相同内容的演示 -

示例

 在线演示

class Tree_structure:
   def __init__(self, data=None):
      self.key = data
      self.children = []

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

   def add_values(self, node):
      self.children.append(node)

   def search_val(self, key):
      if self.key == key:
         return self
      for child in self.children:
         temp = child.search(key)
         if temp is not None:
            return temp
      return None

   def summation_nodes(self):
      sum_val = self.key
      for child in self.children:
         sum_val = sum_val + child.summation_nodes()
      return sum_val

tree = None

print('Menu (no duplicate keys allowed)')
print('add <data> at root')
print('add <data> below <data>')
print('summation')
print('quit')

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

   operation = my_input[0].strip().lower()
   if operation == 'add':
      data = int(my_input[1])
      newNode = Tree_structure(data)
      sub_op = my_input[2].strip().lower()
      if sub_op == 'at':
         tree = newNode
      elif sub_op == 'below':
         my_pos = my_input[3].strip().lower()
         key = int(my_pos)
         ref_node = None
         if tree is not None:
            ref_node = tree.search_val(key)
         if ref_node is None:
            print('No such key exists')
            continue
         ref_node.add_values(newNode)

   elif operation == 'summation':
      if tree is None:
         print('The tree is empty')
      else:
         summation_val = tree.summation_nodes()
         print('Sum of all the nodes is : {}'.format(summation_val))

   elif operation == 'quit':
      break

输出

Menu (no duplicate keys allowed)
add <data> at root
add <data> below <data>
summation
quit
What would you like to do? add 56 at root
What would you like to do? add 45 below 56
What would you like to do? add 23 below 56
What would you like to do? summation
Sum of all the nodes is : 124
What would you like to do?

解释

  • 创建“Tree_structure”类。

  • 它将“key”设置为True,并将一个空列表设置为树的子节点。

  • 它具有一个“set_root”函数,有助于为树设置根值。

  • 定义了一个名为“add_vals”的方法,有助于将元素添加到树中。

  • 定义了一个名为“search_val”的方法,有助于在树中搜索元素。

  • 定义了一个名为“summation_nodes”的方法,有助于获取树中所有元素/节点的和。

  • 这是一个递归函数。

  • 提供了四个选项,例如“在根节点添加”、“在下方添加”、“求和”和“退出”。

  • 根据用户提供的选项,执行相应操作。

  • 此输出显示在控制台上。

更新于: 2021年4月15日

337 次查看

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告