zoukankan      html  css  js  c++  java
  • Python_二叉树

    BinaryTree.py

     1 '''二叉树:是每个节点最多有两个子树(分别称为左子树和右子树)的树结构,二叉树的第i层最多有2**(i-1)个节点,常用于排序或查找'''
     2 class BinaryTree:
     3     def __init__(self,value):
     4         self.__left = None
     5         self.__right = None
     6         self.__data = value
     7 
     8     #析构函数
     9     def __del__(self):
    10         del self.__data
    11 
    12     #创建左子树
    13     def insertLeftChild(self,value):
    14         if self.__left:
    15             print('Left child tree already exists.')
    16         else:
    17             self.__left = BinaryTree(value)
    18             return self.__left
    19 
    20     #创建右子树
    21     def insertRightChild(self,value):
    22         if self.__right:
    23             print('Right child tree already exits.')
    24         else:
    25             self.__right = BinaryTree(value)
    26             return self.__right
    27 
    28     def show(self):
    29         print(self.__data)
    30 
    31     #前序遍历
    32     def preOrder(self):
    33         print(self.__data)  #输出根节点的值
    34         if self.__left:
    35             self.__left.preOrder()  #遍历左子树
    36         if self.__right:
    37             self.__right.preOrder() #遍历右子树
    38 
    39     def postOrder(self):
    40         if self.__left:
    41             self.__left.postOrder()
    42         if self.__right:
    43             self.__right.postOrder()
    44         print(self.__data)
    45 
    46     def inOrder(self):  #中序遍历
    47         if self.__left:
    48             self.__left.inOrder()
    49         print(self.__data)
    50         if self.__right:
    51             self.__right.inOrder()
    52 
    53 if __name__ == '__main__':
    54     print('Please use me a module')

    useBinaryTree.py

     1 from BinaryTree import BinaryTree
     2 root = BinaryTree('root')
     3 b=root.insertRightChild('B')
     4 a=root.insertLeftChild('A')
     5 c=a.insertLeftChild('C')
     6 d=c.insertRightChild('D')
     7 e=b.insertRightChild('E')
     8 f=e.insertLeftChild('F')
     9 root.inOrder()
    10 # C
    11 # D
    12 # A
    13 # root
    14 # B
    15 # F
    16 # E
    17 root.postOrder()
    18 # D
    19 # C
    20 # A
    21 # F
    22 # E
    23 # B
    24 # root
    25 b.inOrder()
    26 # B
    27 # F
    28 # E
  • 相关阅读:
    解决一道leetcode算法题的曲折过程及引发的思考
    算法研究:一维多项式求值(秦九韶算法)
    通过HWND获得CWnd指针
    将标题空格替换为 '_' , 并自动复制到剪切板上
    稀疏矩阵操作算法
    微信好友分析之展示好友信息
    微信好友分析之获取好友信息
    爬取当当网的图书信息之结尾
    爬取当当网的图书信息之封装一个工具类
    爬取当当网的图书信息之实体设计
  • 原文地址:https://www.cnblogs.com/cmnz/p/6936823.html
Copyright © 2011-2022 走看看