表达式树和查找树的 Python 实现


目录

  1. 二叉表达式树
  2. 二叉查找树

 

二叉表达式树

表达式树是二叉树的一种应用,其树叶是常数或变量,而节点为操作符,构建表达式树的过程与后缀表达式的计算类似,只不过在遇到运算符时不是进行计算,而是将树节点赋值为运算符,并将节点的左右叶子指向两个变量构成一个基本的二叉树后再压入栈中

Expression Tree:
    *
    |___________
    |           |
    +           *
    |_____      |_____
    |     |     |     |
    a     b     c     +
                      |__
                      |  |
                      d  c

下面利用代码实现一棵二叉表达式树

完整代码

 1 from binary_tree import BinaryTree, TreeNode
 2 from stack.linked_list_stack import Stack
 3 
 4 
 5 class ExpressionTree(BinaryTree):
 6     SIGN = {'+': 1, '-': 1, '*': 2, '/': 2, '(': 3}
 7     
 8     def gene_tree_by_postfix(self, expr):
 9         s = Stack()
10         for i in expr:
11             if i in self.SIGN.keys():
12                 right = s.pop()
13                 left = s.pop()
14                 node = TreeNode(i, left, right)
15                 s.push(node)
16             else:
17                 s.push(TreeNode(i))
18         self._root = s.pop()
19 
20 
21 def test_expression_tree(ep):
22     t = ExpressionTree()
23     t.gene_tree_by_postfix(ep)
24     print('\n------Pre-traversal-------')
25     print(t)
26 
27     print('\n------Post-traversal------')
28     t.show(t.post_traversal())
29     print('\n-------In-traversal-------')
30     t.show(t.in_traversal())
31 
32 
33 if __name__ == '__main__':
34     ep = 'a b + c d e + * *'
35     '''
36     *
37     |___________
38     |           |
39     +           *
40     |_____      |_____
41     |     |     |     |
42     a     b     c     +
43                       |__
44                       |  |
45                       d  c
46     '''
47     test_expression_tree(ep.split(' '))
View Code

相关文章:

  • 2021-06-10
  • 2022-01-10
  • 2021-12-10
  • 2022-12-23
  • 2021-06-01
  • 2021-08-08
  • 2021-09-01
  • 2022-02-08
猜你喜欢
  • 2022-01-15
  • 2022-02-08
  • 2021-08-29
  • 2021-12-10
  • 2021-04-16
  • 2021-11-28
  • 2022-01-14
相关资源
相似解决方案