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