Description

二叉树是结点的一个有限集合,该集合或者为空或者是由一个根结点加上两棵分别称为左子树和右子树的、互不相交的二叉树组成。

在定义树结点时,你的结点Node的属性应包括Node.elem, Node.lchild和Node.rchild等这三个属性,其分别代表节点的数据,节点的左孩子和节点的右孩子,属性的命名必须是elem、lchild和rchild。

同时,你需要根据输入数据建立一棵名为MyTree(注意大小写)的二叉树,该树拥有的变量应至少包含名为root(如MyTree.root)元素,代表该二叉树的根节点。

注意:本题树可能为空(树为空的情形指第一行无任何输入,即键入回车,空树没有任何结点)。

下面的代码是本题的main函数部分,最后三句代码的功能是执行输入的N条命令,请在代码块的地方添加根据输入的数据构造二叉树MyTree的代码块,注意代码块缩进的问题。

eval语句的功能是将接收到的字符串转换成命令并执行。

if **name**=='**main**':

#####################################

接收处理第一行数据并构造树的代码区域

#####################################

N = int(input())

for i in range(N):

eval(input())

Input 第一行字符表示要建立二叉树的元素(元素之间以空格分开),第二行表示待执行语句的行数n,接下来n行表示待执行的语句。

二叉树建立规则:按照完全二叉树的编号方式(根节点从0开始,然后从左到右,从上到下依次编号),第一行内各元素对应的索引即为该元素在完全二叉树中的位置,如样例中a(索引为0)为保存在根结点内的元素,特别注意‘#’代表不存在该节点,因此实际的二叉树中没有以‘#’为元素的结点。

Output 建立二叉树时无需输出二叉树;输入命令时会依次在每行输出相应命令的运行结果;当为空树(即树没有结点)时,访问该树的根节点(即MyTree.root)需输出None;当访问的节点不存在时,输出None。

Sample Input 1

a c d f # 11 2 print(MyTree.root.rchild.lchild.elem) print(MyTree.root.lchild.lchild.elem) Sample Output 1

11 f