基于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)