Description:
在定义树结点时,你的结点Node的属性应包括Node.elem, Node.lchild和Node.rchild等这三个属性,其分别代表节点的数据,节点的左孩子和节点的右孩子,属性的命名必须是elem、lchild和rchild。
同时,你需要根据输入数据建立一棵名为MyTree(注意大小写)的二叉树,该树拥有的变量应至少包含名为root(如MyTree.root)元素,代表该二叉树的根节点。
注意:树可能为空(树为空的情形指第一行无任何输入,即键入回车,空树没有任何结点)。
Solution:
# Filename: MyTree.py
class Node():
def __init__(self,elem = None, lchild = None, rchild = None):
self.elem = elem
self.lchild_em = 0
self.lchild = lchild
self.rchild = rchild
class myTree():
def __init__(self,values):
self.queue = []
self.root = None
for i in range(len(values)):
self.add(values[i])
def add(self,value):
if self.root == None:
self.root = Node(value)
self.queue.append(self.root)
else:
if value == '#':
value = None
now = self.queue[0]
if now.lchild == None:
now.lchild = Node(value)
self.queue.append(now.lchild)
else:
now.rchild = Node(value)
self.queue.pop(0) #第一个结点已装满,弹走!
self.queue.append(now.rchild)
def traversal(self):
if self.root == None:
print(None)
return
self.queue = []
self.queue.append(self.root)
while len(self.queue) != 0:
now = self.queue.pop(0)
if now != None:
print(now.elem)
self.queue.append(now.lchild)
self.queue.append(now.rchild)
if __name__ == '__main__' :
value = input().split()
MyTree = myTree(value)
#MyTree.traversal()
N = int(input())
for i in range(N):
try:
eval(input())
except:
print(None)
Bugs you may write:
1.你如何处理空树?
2.如何检查你写的代码对不对?(顺便写个遍历检查下树的结构吧)