2016 G面试题#2 不构造树的情况下验证先序遍历

 

 1 def isValidTree(POTra):
 2     """
 3     POTra :param list:
 4     :return:
 5     """
 6 
 7     if not POTra:
 8         return True
 9 
10     while len(POTra) > 1:
11         index = []
12         n = len(POTra)
13         for i in range(0, n-2):
14             if POTra[i] != '#' and POTra[i+1] == '#' and POTra[i+2] == '#':
15                 POTra[i] = '#'
16                 index.append(i+1)
17                 index.append(i+2)
18             else:
19                 continue
20         removeset = set(index)
21         POTra = [v for i, v in enumerate(POTra) if i not in removeset]
22         #print(POTra)
23         if len(POTra) == n:
24             break
25 
26 
27     if POTra == ['#']:
28         return True
29     else:
30         return False

Keys: 在一个list中根据index可以同时去掉多个element, see L21

posted @ 2016-11-17 08:53  lettuan  阅读(166)  评论(0编辑  收藏  举报