数据结构:二叉树 基于list实现(python版)

基于python的list实现二叉树

 1 #!/usr/bin/env python
 2 # -*- coding:utf-8 -*-
 3 
 4 class BinTreeValueError(ValueError):
 5     pass
 6 
 7 class BinTreeList(object):
 8     def __init__(self, data, left = None, right = None):
 9         self.btree = [data, left, right]
10     #判断二叉树是否为空
11     def is_empty_bintree(self):
12         return self.btree[0] is None
13     #返回根节点的值
14     def root(self):
15         return self.btree[0]
16     #返回左子树
17     def left(self):
18         return self.btree[1]
19     #返回右子树
20     def right(self):
21         return self.btree[2]
22     #设置根值
23     def set_root(self, data):
24         if data is None:
25             raise BinTreeValueError("root can't be empty")
26         else:
27             self.btree[0] = data
28     #设置左子树
29     def set_left(self, left):
30          if self.is_empty_bintree():
31              raise BinTreeValueError("root is empty")
32          elif isinstance(left, BinTreeList):
33              self.btree[1] = left.btree
34          else:
35              self.btree[1] = left
36     #设置右子树
37     def set_right(self, right):
38         if self.is_empty_bintree():
39             raise BinTreeValueError("root is empty")
40         elif isinstance(right, BinTreeList):
41             self.btree[2] = right.btree
42         else:
43             self.btree[2] = right
44 
45 if __name__ == "__main__":
46     t = BinTreeList(1)
47     print(t.btree)
48     print(t.is_empty_bintree())
49     t1 = BinTreeList(2)
50     t.set_left(t1)
51     print(t.btree)
52     t2 = BinTreeList(3)
53     t.set_right(t2)
54     print(t.btree)
55     t.set_root(4)
56     print(t.btree)
57     t4 = BinTreeList(5)
58     t1.set_left(t4)
59     print(t.btree)
60     t1.set_right(6)
61     print(t.btree)
原文地址:https://www.cnblogs.com/xautxuqiang/p/6124811.html