Oversea_Job 板


LINE

: 推 jennya: 1.阵列建二元树:(X) 不必使用BFS,使用for回圈将阵列跑一 04/07 01:55 : → jennya: 遍就可以做到,省下bfs queue的空间 04/07 01:55 : 推 Ninja5566: 楼上第一题怎麽用for 建complete b-tree?我还真想不到 04/07 02:04 : → Ninja5566: 而且还是在不用额外记忆体的情况下 04/07 02:04 : 推 Ninja5566: 利用pre or inorder traversal建还是需要暂存parent 04/07 02:07 : → Ninja5566: 不然要怎麽返回parent node? 04/07 02:07 : 推 jennya: @Ninja5566 你说的对。我原本的想法像是这样: 04/07 02:44 : → jennya: https://www.paste.org/97946 04/07 02:44 : → jennya: 但是仔细一想这的确和BFS差不多。这部分我的确是呛原PO呛 04/07 02:44 : → jennya: 错了。谢谢~~ 04/07 02:44 忍不住认真一下… 其实这是可行的,所以jennya大并没有呛错(疑?) 这就这很像帮array-based tree写一个iterator 顺手写了一下code,没有仔细改,可能不是很concise https://pastebin.com/AidafGZP 这其实是在工作中可能会出现,很实际的需求: 你在开发一个micro-controller程式,这个环境没有heap,只有超小的stack memory中已存在一个以array表示的binary search tree 请写一个function在O(N)时间及O(1)空间做完in-order traversal (N=number of elements) Notes: * O(1)空间表示严格来说不能用recursion,否则是O(log(N)) * 我的算法走访每个edge两次,所以是时间O(N) * 以array表示binary tree是很实继的做法,尤其当资料是immutable时 比为了每个node分别在heap配置空间节省很多 --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 24.5.73.164
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Oversea_Job/M.1554705256.A.296.html ※ 编辑: yzugsr (24.5.73.164), 04/08/2019 14:35:01
1F:→ donkilu: 讨论下去就要去softjob板啦XD 04/08 14:43
抱歉占用版面QQ 如不符版规请告知
2F:推 TAMSHUI: 讨论串还不错欸,学到很多XD 04/08 19:38
3F:推 Ninja5566: 他是说建树 不是 traverse 04/08 19:55
4F:推 sdriver: 你讲的是另一题,traverse tree’s inorder with iterati 04/08 21:13
5F:→ sdriver: on 04/08 21:13
6F:推 icecastleo: 稍微改一下树不就建起来了吗 04/09 00:13
7F:推 Ninja5566: 建树是另外一回事, 除非你另外存在struct不然node不 04/09 00:44
8F:→ Ninja5566: 知道自己的parent还有自己是左子还右子 04/09 00:44
9F:推 icecastleo: ...我们讨论的是complete binary tree 04/09 02:18
我的确看错了原本推文的意思,但这仍是可行的 首先,Tree Node可以包含parent, left, right三个指标 这里有些trade-off,例如: * 不放parent省空间,但中序走访会如果要O(1) space就要O(N*log(N)) time * 放了parent比较占空间,但中序走访会是O(N) time, O(1) space 此外许多tree mutating (e.g. rotate) 没有parent pointer很难做 大多数实作(E.g. SGI STL)包含了parent 这是我们每天日常使用iterator over a tree的背後实作 剩下就是把tree traversal改成同时走访array-based tree 一样,顺手写了一下(带简单测试),code talks https://pastebin.com/Jfwq6TL8 O(N) time. 不算新建的树的话O(1) space.
10F:→ jatj: 建树还是要o(log(N))吧 04/09 02:37
建树至少要O(N),因为要写N个elements
11F:→ jatj: 我是指暂存 04/09 05:41
12F:推 Ninja5566: 他说省下queue的空间, 你其实也是做一样的事情, 只是 04/09 06:43
13F:→ Ninja5566: 把空间移到struct而已 04/09 06:43
14F:→ Ninja5566: 换句话讲人家用BFS用queue,而 你用不同方式纪录ptr而已 04/09 06:45
※ 编辑: yzugsr (24.5.73.164), 04/09/2019 09:42:58
15F:→ jatj: 建树当然至少要O(N) 04/09 10:07
16F:→ shaform: 如果是指暂存,不计树本身,那jennya的for loop 应该较好? 04/09 23:43







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:Soft_Job站内搜寻

TOP