”自定义二叉树结构“
下面代码实现了二叉树结构,实现二叉树的创建,插入子节点以及前序遍历,中序遍历和后序遍历等遍历方式,同时还支持二叉树中任意子树的节点遍历。
class BinaryTree:
def __init__(self,value):
self._left=None
self._right=None
self._data=value
def insertLeftChild(self,value): #创建左子树
if self._left:
print('left child tree already exists.')
else:
self._left=BinaryTree(value)
return self._left
def insertRightChild(self,value): #创建右子树
if self._right:
print('right child tree already exists.')
else:
self._right=BinaryTree(value)
return self._right
def show(self):
print(self._data)
def preOrder(self): #前序遍历(根左右)
print(self._data)
if self._left:
self._left.preOrder()
if self._right:
self._right.preOrder()
def postOrder(self): #后序遍历(左右根)
if self._left:
self._left.postOrder()
if self._right:
self._right.postOrder()
print(self._data)
def inOrder(self): #中序遍历(左根右)
if self._left:
self._left.inOrder()
print(self._data)
if self._right:
self._right.inOrder()
if __name__=='__main__':
print('Please use me as a module.')
将上述代码保存为BinaryTree.py文件,下面的代码创建了下图所示的二叉树,并对该二叉树进行遍历。

1 ==== RESTART: C:/Users/Administrator/Desktop/时间宝/python/BinaryTree.py ==== 2 Please use me as a module. 3 >>> import BinaryTree 4 >>> root=BinaryTree.BinaryTree('root') 5 >>> b=root.insertRightChild('B') 6 >>> a=root.insertLeftChild('A') 7 >>> c=a.insertLeftChild('c') 8 >>> d=b.insertRightChild('D') 9 >>> e=c.insertLeftChild('E') 10 >>> f=e.insertLeftChild('F') 11 >>> root.inOrder() 12 F 13 E 14 c 15 A 16 root 17 B 18 D 19 >>> root.inOrder() 20 F 21 E 22 c 23 A 24 root 25 B 26 D 27 >>> root.postOrder() 28 F 29 E 30 c 31 A 32 D 33 B 34 root 35 >>> b.inOrder() 36 B 37 D
以上就是我的今日总结,有什么问题或者错误可以告诉我哟!
继续加油,努力!
浙公网安备 33010602011771号