二叉树前序遍历python输出_Python 二叉树查找 前序 中序 后序遍历
# -*- coding: utf-8 -*-
# author: zhonghua
# filename: search_binarytree.py
# create: 2016/3/29
# version: 1.0
# 二叉樹查找
# 1.生成二叉樹
# 2.遍歷查找
class Node:
def __init__(self, data, left, right):
self._data = data
self._left = left
self._right = right
class BinaryTree:
def __init__(self):
self._root = None
def make_tree(self, node):
self._root = node
def insert(self, node):
def insert_node(tree_node, node):
if tree_node._data >= node._data:
if tree_node._left is None:
tree_node._left = node
else:
insert_node(tree_node._left, node)
else:
if tree_node._right is None:
tree_node._right = node
else:
insert_node(tree_node._right, node)
insert_node(self._root, node)
def search(self, data):
def search_node(tree_node, data):
if tree_node._data == data:
print 'success.'
return
elif tree_node._data >= data:
if tree_node._left is None:
return
else:
search_node(tree_node._left, data)
else:
if tree_node._right is None:
return
else:
search_node(tree_node._right, data)
search_node(self._root, data)
def pre_order(self):
lst = []
def order(node):
# print node._data
lst.append(node._data)
if node._left is not None:
order(node._left)
if node._right is not None:
order(node._right)
order(self._root)
print lst
def in_order(self):
lst = []
def order(node):
if node._left is not None:
order(node._left)
# print node._data
lst.append(node._data)
if node._right is not None:
order(node._right)
order(self._root)
print lst
def post_order(self):
lst = []
def order(node):
if node._left is not None:
order(node._left)
if node._right is not None:
order(node._right)
# print node._data
lst.append(node._data)
order(self._root)
print lst
if __name__ == '__main__':
lst = [12, 9, 7, 19, 3, 8, 52, 106, 70, 29, 20, 16, 8, 50, 22, 19]
tree = BinaryTree()
# 生成二叉樹
for (i, j) in enumerate(lst):
node = Node(j, None, None)
if i == 0:
tree.make_tree(node)
else:
tree.insert(node)
# 二叉樹查找
tree.search(70)
# 二叉樹遍歷,前序、中序、后序
tree.pre_order()
tree.in_order()
tree.post_order()
總結
以上是生活随笔為你收集整理的二叉树前序遍历python输出_Python 二叉树查找 前序 中序 后序遍历的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: jupyter notebook pyt
- 下一篇: 多线程读取同一个文件_前端进阶:多线程W