输入第一行包括一个整数n(1<=n<=100)。 接下来的一行包括n个整数。
可能有多组测试数据,对于每组数据,将题目所给数据建立一个二叉排序树,并对二叉排序树进行前序、中序和后序遍历。 每种遍历结果输出一行。每行最后一个数据之后有一个换行。 输入中可能有重复元素,但是输出的二叉树遍历序列中重复元素不用输出。
5 1 6 5 9 8
1 6 5 9 8 1 5 6 8 9 5 8 9 6 1
#参考SINGLE、DOG的Python版
class Node:
def __init__(self, data, left=None, right=None):
self.data = data
self.left = left
self.right = right
def insertNode(value, root): #插入节点
if root.data == value:
return
if root.data < value:
if not root.right:
root.right = Node(value)
else:
insertNode(value, root.right)
else:
if not root.left:
root.left = Node(value)
else:
insertNode(value, root.left)
def pre_orderTtaversing(root): #前序遍历
if not root:
return
print(root.data, end=" ")
pre_orderTtaversing(root.left)
pre_orderTtaversing(root.right)
def mid_orderTtaversing(root): #中序遍历
if not root:
return
mid_orderTtaversing(root.left)
print(root.data, end=" ")
mid_orderTtaversing(root.right)
def post_orderTtaversing(root): #后序遍历
if not root:
return
post_orderTtaversing(root.left)
post_orderTtaversing(root.right)
print(root.data, end=" ")
try:
while True:
num = int(input())
nodeList = list(map(int, input().split()))
root = Node(nodeList[0])
for i in range(1, num):
insertNode(nodeList[i], root)
pre_orderTtaversing(root)
print()
mid_orderTtaversing(root)
print()
post_orderTtaversing(root)
print()
except Exception:
pass # encoding=utf-8
import sys
class TreeNode(object):
def __init__(self, x):
self.val = x
self.left = None
self.right = None
def put(root, num):
if root is None:
return TreeNode(num)
elif num == root.val:
return root
elif num < root.val:
root.left = put(root.left, num)
return root
else:
root.right = put(root.right, num)
return root
def build(nums):
root = None
for num in nums:
root = put(root, num)
return root
def preorder(root):
if root is not None:
sys.stdout.write('%d ' % root.val)
preorder(root.left)
preorder(root.right)
def inorder(root):
if root is not None:
inorder(root.left)
sys.stdout.write('%d ' % root.val)
inorder(root.right)
def postorder(root):
if root is not None:
postorder(root.left)
postorder(root.right)
sys.stdout.write('%d ' % root.val)
while True:
try:
input()
nums = map(int, raw_input().split())
tree = build(nums)
preorder(tree)
print
inorder(tree)
print
postorder(tree)
print
except EOFError:
break