二叉树结构
class Node (object) :
def __init__ (self, data, left=None, right=None) :
self.data=data
self.left=left
self.right=right
binarytree=Node(1 ,Node(3 ,Node(7 ,Node(0 )),Node(6 )),Node(2 ,Node(5 ),Node(4 )))
二叉树遍历
def lookup (root) :
print("二叉树层次遍历的结果:" ,end='' )
stack = [root]
while stack:
current=stack.pop(0 )
print(current.data,end='' )
if current.left:
stack.append(current.left)
if current.right:
stack.append(current.right)
print()
lookup(binarytree)
def preorder (root, order) :
if root==None :
return
print(root.data,end='' )
order.append(root.data)
preorder(root.left, order)
preorder(root.right, order)
print("二叉树前序遍历的结果:" ,end='' )
pre_order=[]
preorder(binarytree, pre_order)
print()
def inorder (root, order) :
if root==None :
return
inorder(root.left, order)
print(root.data,end='' )
order.append(root.data)
inorder(root.right, order)
print("二叉树中序遍历的结果:" ,end='' )
in_order=[]
inorder(binarytree, in_order)
print()
def postorder (root, order) :
if root==None :
return
postorder(root.left, order)
postorder(root.right, order)
print(root.data,end='' )
order.append(root.data)
print("二叉树后序遍历的结果:" ,end='' )
post_order=[]
postorder(binarytree, post_order)
print()
根据前序遍历和中序遍历构造二叉树
def construct_tree (pre_order, in_order) :
if len(pre_order)==0 :
return None
root_data=pre_order[0 ]
for i in range(len(in_order)):
if in_order[i]==root_data:
break
left=construct_tree(pre_order[1 :i+1 ],in_order[:i])
right=construct_tree(pre_order[i+1 :],in_order[i+1 :])
return Node(root_data, left, right)
binarytree2=construct_tree(pre_order, in_order)