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