python实现mysql二叉树_Python 二叉树实现
#二叉树实现
class Node():
def __init__(self,item):
self.elem = item
self.lchild = None
self.rchild = None
class Tree():
def __init__(self):
self.root = None
def add(self,item):
node = Node(item)
if self.root is None:
self.root = node
return
queue = []
queue.append(self.root)
#寻找空节点放入目标节点
while queue:
cur_node = queue.pop(0)
if cur_node.lchild is None:
cur_node.lchild = node
return
else:
queue.append(cur_node.lchild)
if cur_node.rchild is None:
cur_node.rchild = node
return
else:
queue.append(cur_node.rchild)
#广度遍历
def breadth_travel(self):
if self.root is None:
return
queue = [self.root]
while queue:
cur_node = queue.pop(0)
print(cur_node.elem)
if cur_node.lchild is not None:
queue.append(cur_node.lchild)
if cur_node.rchild is not None:
queue.append(cur_node.rchild)
#前序遍历,根,左子树,右子树
def preorder(self,node):
if node is None:
return
print(node.elem,end = ‘ ‘)
self.preorder(node.lchild)
self.preorder(node.rchild)
#中序遍历,左子树,根,右子树
def inorder(self,node):
if node is None:
return
self.inorder(node.lchild)
print(node.elem,end = ‘ ‘)
self.inorder(node.rchild)
#后序遍历,左子树,右子树,根
def postorder(self,node):
if node is None:
return
self.postorder(node.lchild)
self.postorder(node.rchild)
print(node.elem,end = ‘ ‘)
还没有评论,来说两句吧...