消除二叉树中的节点(python)

张开发
2026/6/6 10:00:48 15 分钟阅读
消除二叉树中的节点(python)
# 7 # 1 3 3 3 4 5 6 # 3 # 2 3 4 # 36541 from collections import Counter def f(n,nums1,m,nums2): def split_to_level(arr,total_node): #将树分层 level[] cur_node0 step1 while cur_nodetotal_node: level.append(arr[cur_node:cur_nodestep]) cur_nodestep step*2 return level global_cntCounter() origin_levelsplit_to_level(nums1,n) #树分层 ref_levelsplit_to_level(nums2,m) #树分层 for depth in range(len(origin_level)): if depth len(ref_level): ref_cntCounter(ref_level[depth]) #当前参考树层频次 else: ref_cntCounter() ori_cntCounter(origin_level[depth]) #当前原始树层频次 for key,val in ori_cnt.items(): xmin(ref_cnt[key],val) #由于使用了Counter(),如果不存在这个键会直接返回0 aval-x if a0: global_cnt[key]a if not global_cnt: print(0) return res[] sorted_globalsorted(global_cnt.items(),keylambda x :(x[1],x[0]),reverseTrue) #返回列表 for i,j in sorted_global: res.append(i) print(.join(map(str,res))) def main(): nint(input()) nums1list(map(int,input().split())) mint(input()) nums2list(map(int,input().split())) f(n,nums1,m,nums2) if __name____main__: main()

更多文章