import sys
class TreeNode():
def __init__(self, data=-1):
self.data = data
self.leftChild, self.rightChild = None, None
def insert(self, data):
prior = self
while True:
if prior.data > data:
if prior.leftChild == None:
prior.leftChild = TreeNode(data)
break
prior = prior.leftChild
elif prior.data < data:
if prior.rightChild == None:
prior.rightChild = TreeNode(data)
break
prior = prior.rightChild
elif prior.data == data:
break
def preOrder(self):
preOrderSeq.append(self.data)
# print(self.data, end=' ')
if self.leftChild != None:
self.leftChild.preOrder()
if self.rightChild != None:
self.rightChild.preOrder()
def inOrder(self):
if self.leftChild != None:
self.leftChild.inOrder()
# print(self.data, end=' ')
inOrderSeq.append(self.data)
if self.rightChild != None:
self.rightChild.inOrder()
def postOrder(self):
if self.leftChild != None:
self.leftChild.postOrder()
if self.rightChild != None:
self.rightChild.postOrder()
# print(self.data, end=' ')
postOrderSeq.append(self.data)
newCase = True
for line in sys.stdin:
line = line.strip()
if newCase:
n = int(line)
newCase = False
else:
preOrderSeq,inOrderSeq,postOrderSeq = [],[],[]
newCase = True
nums = list(map(int,line.split()))
root = TreeNode(nums[0])
for num in nums[1:]:
root.insert(num)
root.preOrder()
print(*preOrderSeq)
root.inOrder()
print(*inOrderSeq)
root.postOrder()
print(*postOrderSeq)
KY223 二叉排序树
最新推荐文章于 2024-09-27 17:31:02 发布