class TreeNode:
    def __init__(self, x):
        self.val = x
        self.left = None
        self.right = None
def traversal(node):
    if node:
        yield from traversal(node.left)
        yield node.val
        yield from traversal(node.right)
其实也是最近几个月在每天都刷一两道 leetcode 题目.
后来某某某给我了段新的代码.
data Tree a
        = Branch a (Tree a) (Tree a)
        | Tip
treeToList :: Tree a -> [a]
treeToList Tip = []
treeToList (Branch x l r) = treeToList l ++ [x] ++ treeToList r
|  |      1Perry      2018-10-07 08:04:24 +08:00 via iPhone 就一个最基础的 inorder traversal 需要分享吗... | 
|  |      3mysticzt123      2018-10-07 08:20:06 +08:00 这是 leetcode 上别人的答案吧  去年刷题的时候好像见过 | 
|      4ltoddy OP @mysticzt123 那看来有共鸣了.(窃喜 | 
|      5bucky      2018-10-07 08:31:17 +08:00 中序,递归,yield | 
|      6qile1      2018-10-07 08:47:16 +08:00 via Android 看不懂,上面那个类是干啥的,好像没有引用 | 
|  |      7lhx2008      2018-10-07 08:49:27 +08:00 via Android 不过是语法糖而已。。排序直接 sort 不也美哉 | 
|  |      8AnyISalIn      2018-10-07 08:52:39 +08:00 就是递归啊。生成器的语法糖而已 | 
|  |      11Raisu      2018-10-07 10:27:12 +08:00 via Android 。。。。这 | 
|      12Mitt      2018-10-07 10:30:06 +08:00 via iPhone  1 这也需要拿出来分享,你是在黑 pythoner 吗 | 
|      14sww4718168      2018-10-07 10:58:27 +08:00 `yield from` 真是让我们省了好多好多代码。 | 
|      15carlclone      2018-10-07 11:38:10 +08:00 .... | 
|      16zpxshl      2018-10-07 11:56:05 +08:00 via Android ........ | 
|  |      17d18      2018-10-07 14:36:38 +08:00 楼主不是计算机专业吧,这是数据结构基础了。 | 
|  |      19mathzhaoliang      2018-10-07 15:08:44 +08:00 @Mitt 楼主的本意是推销 repo ...  等广告打够了就要放公众号和打赏二维码了 ... | 
|  |      20d18      2018-10-07 15:16:59 +08:00 我错了,原来楼主你是来推销自己的 GitHub 的 | 
|  |      21plantom03      2018-10-07 15:23:43 +08:00 via iPhone ... | 
|  |      2220015jjw      2018-10-07 15:23:46 +08:00 via Android 这种秀操作的挺好 只是在实际操作 /面试的时候 100%没人这么写 写了也得改 iterative | 
|  |      23pricelessLucky      2018-10-07 16:06:30 +08:00 ……??? | 
|      24yanzixuan      2018-10-07 16:07:20 +08:00 写不了这个,因为我还在用 2.7。手动斜眼 | 
|      25Mitt      2018-10-07 20:19:16 +08:00 via iPhone @ltoddy .... 别把 你还没搞清楚 python pythonista pythoner 的区别么 | 
|  |      26zhangZMZ      2018-10-07 20:32:37 +08:00 如果用平 php 的话,一个函数搞定? getToTrees($data); 世界上最美的语言===PHP 我这么说可以你不能说,因为我是 PHPER 哈哈 | 
|  |      27zhangZMZ      2018-10-07 20:35:41 +08:00 话说 python 不也是内部封的函数调用吗?手动滑稽 | 
|  |      28webdisk      2018-10-07 21:41:34 +08:00 这种递归的情况, 实际运行时 python 能把它展开么 | 
|  |      29JerryCha      2018-10-08 02:13:22 +08:00 有没有 C 的呀 (滑稽) | 
|      30loqixh      2018-10-08 16:55:54 +08:00 我有一个问题, 为什么可以这么? 明显 traversal 和 node.val 类型不一样啊? 从对应 c#代码可以看出 '' class TreeNode<T> { public T val; public TreeNode<T> left; public TreeNode<T> right; public TreeNode(T val) { this.val = val; } public IEnumerable<T> traversal() { foreach (var val in left.traversal()) { yield return val; } yield return val; foreach (var val in right.traversal()) { yield return val; } } } '' |