zoukankan      html  css  js  c++  java
  • 数据结构:二叉树 基于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)
  • 相关阅读:
    网络流24题-运输问题
    ASP.NET API
    面向对象理解
    冒泡排序
    HTTP Header 缓存
    HTTP Header
    Flask学习笔记07之模板渲染
    Flask学习笔记06之@before_request请求之前执行
    Flask报错:AssertionError: View function mapping is overwriting an existing endpoint function: inner
    装饰器03之多个装饰器的执行顺序
  • 原文地址:https://www.cnblogs.com/xautxuqiang/p/6124811.html
Copyright © 2011-2022 走看看