Given an n-ary tree, return the preorder traversal of its nodes' values.

For example, given a 3-ary tree:

Return its preorder traversal as: [1,3,5,6,2,4].

这个题目思路就是跟LeetCode questions conlusion_InOrder, PreOrder, PostOrder traversal类似, recursive 和iterable都可以.

04/17/2019 update: 加第三种方法, 利用divide and conquer

1. Recursively

class Solution:
def nary_Preorder(self, root):
def helper(root):
if not root: return
ans.append(root.val)
for each in root.children:
helper(each)
ans = []
helper(root)
return ans

2. Iterable

class Solution:
def nary_preOrder(self, root):
if not root: return []
stack, ans = [root], []
while stack:
node = stack.pop()
ans.append(node.val)
for each in node.children[::-1]:
stack.append(each)
return ans

3. Divide and conquer

# Divide and conquer
class Solution:
def preOrder(self, root):
if not root: return []
temp = []
for each in root.children:
temp += self.preOrder(each)
return [root.val] + temp

最新文章

  1. 【读书笔记《Bootstrap 实战》】4.企业网站
  2. iftop 安装以及相关参数及说明(转载自csdn)
  3. python学习笔记-Day4(2)
  4. 关于json的理解
  5. mingw fbx sdk /浮点数精度
  6. MYSQL判断某个表是否已经存在
  7. python time模块详解(转)
  8. linux内核数据结构--进程相关
  9. Object-c 创建对象
  10. C语言sendto()函数-经socket传送数据以及recvfrom函数《转》
  11. poj 1659 Frogs' Neighborhood (度序列)
  12. Java:网络编程
  13. redis3.0 集群在windows上的配置(转)
  14. Navicat 导出sql问题
  15. 前端开发【第二篇: css】
  16. jsp中<c:if>标签的用法
  17. Beta冲刺(1/5)(麻瓜制造者)
  18. 【PyQt5-Qt Designer】QDoubleSpinBox-小数微调框
  19. 1-1 sacc(scss)入门
  20. Android Handler 内存泄漏,文末消息机制的小总结

热门文章

  1. springboot---->springboot中的格式化(一)
  2. 原生js--兼容获取窗口滚动条位置和窗口大小的方法
  3. sencha touch 视图(view) activate与deactivate事件探讨
  4. Linux系统启动内幕
  5. jquery validate使用笔记
  6. MySQL里面的子查询
  7. POJ 3258 River Hopscotch(二分答案)
  8. Sublime text3配置LiveReload 浏览器即时刷新
  9. [转]Shell脚本之无限循环的两种方法
  10. mysql如何使用索引index提升查询效率?