首页 > 编程语言 > 详细

Python_二叉树

时间:2017-06-03 12:00:56      阅读:211      评论:0      收藏:0      [点我收藏+]

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

 

Python_二叉树

原文:http://www.cnblogs.com/cmnz/p/6936823.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!