《数据结构与算法分析python版》第九周编程作业
1、二叉树复原
题目内容:
给定一种序列化二叉树的方式:从根节点起始按层次遍历二叉树所有“可能”存在节点的位置:若该位置存在节点,则输出节点值,并在下一层相应增加两个可用位置;否则输出None,且不增加下一层的可用位置。
例如"[5, 4, 7, 3, None, 2, None, -1, None, 9]"是下图所示的二叉树序列化的结果:
其中红色箭头对所有的None进行了标记。
现给出一个二叉树以这种形式序列化的结果,请复原该二叉树并给出它的中序遍历。
输入格式:
一行合法的Python表达式,可解析为包含整数与None的列表
输出格式:
二叉树中序遍历的整数序列,以空格分隔
若无对应下标,则输出"none"
输入样例
[5, 4, 7, 3, None, 2, None, -1, None, 9]
输出样例:
-1 3 4 5 9 2 7
没得思路,转一下别人的代码
脚本
class BinaryTree:
def __init__(self,data):
self.data = data
self.leftChild = None
self.rightChild = None
self.leftflag = 0
self.rightflag = 0
def seq2tree(seq):
queue = []
i = 1
currentTree = BinaryTree(seq[0])
wholeTree = currentTree
queue.append(currentTree)
while i < len(seq) and len(queue)> 0:
currentTree = queue.pop(0)
if seq[i] == None:
if currentTree.leftflag == 0 and currentTree.rightflag == 0:
currentTree.leftflag = 1
queue.insert(0, currentTree)