作者yang20913 (yanggood)
看板C_and_CPP
标题关於tree traversal
时间Sat Nov 18 19:23:49 2017
preorder, inorder, postorder
这三种traversal可以很轻松的用recursive来完成
以往格式要求都是
1(空格)2(空格)3(空格)
这样就印成功了
但现在要求
1(空格)2(空格)3
印出的最後一个元素後面不能接空格
想请问要如何判断哪一个会是最後一个呢
目前只想出用大量判断式
但这应该不是个好方法...
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 1.160.214.144
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1511004231.A.759.html
1F:推 Hazukashiine: 一个比较肮脏的手法是 每个节点改成 先印空白再输出11/18 19:33
2F:→ Hazukashiine: 数字 然後用一个旗标变数 让第一个节点不输出空白11/18 19:33
3F:→ yang20913: 谢谢你的建议 可是不能改节点QQ11/18 19:42
4F:→ Hazukashiine: 如果只是要让介面输出漂亮而不在乎掺杂控制字元的话11/18 19:47
5F:→ Hazukashiine: 可以使用 puts("\b"); 来输出 Backapace Character11/18 19:47
7F:→ Hazukashiine: 不过这东西尽量少用 常常会让 stdout parsing 错误11/18 19:50
8F:推 school4303: 感觉这是作业 你会知道有多少节点吗?11/18 20:02
这是作业没错~ 会知道 我有记size
9F:推 ilikekotomi: 可以先印出空格在印出元素 因为你一定知道第一个是谁11/18 20:07
10F:→ ilikekotomi: 所以第一个不要印空格就达成你需求了11/18 20:07
不是只有preorder才知道第一个是谁吗?
11F:→ yang20913: H大的我有想过 但那要在函式外(整个recursive)跑完才11/18 20:08
12F:→ yang20913: 能倒退11/18 20:08
※ 编辑: yang20913 (1.160.214.144), 11/18/2017 20:11:03
13F:→ ilikekotomi: H大讲得不会改到节点 只有改变节点的输出方式11/18 20:10
对耶 不会改到节点 跟H大说声抱歉
※ 编辑: yang20913 (1.160.214.144), 11/18/2017 20:12:43
14F:→ ilikekotomi: 用flag纪录有没有print过 没有的就是第一个11/18 20:13
15F:→ Hazukashiine: 不慌不慌 >\\\<11/18 20:13
用flag写出来了 感谢!!
16F:推 school4303: 那就偷懒一点 纪录一下你输出几个 最後一个不要空格就11/18 20:17
17F:→ school4303: 好 11/18 20:17
这方法也行! 谢谢!!
※ 编辑: yang20913 (1.160.214.144), 11/18/2017 20:21:05
18F:推 stupid0319: printf("%d %d %d", preorder, inorder, postorder); 11/18 21:35
19F:→ stupid0319: 这样呢 11/18 21:35
我可能没表达好
不是一起印哦
20F:推 alan23273850: 第二个念头想到的想法是先把他们全部丢到一个字串里 11/18 21:54
21F:→ alan23273850: 面,再从那个字串检查最後一个字元是不是空白,是的11/18 21:54
22F:→ alan23273850: 话就把它砍掉,不过仅限於节点数少的时候,而且很浪 11/18 21:55
23F:→ alan23273850: 费空间11/18 21:55
好像也行耶
只是这样要有一个全域的string
※ 编辑: yang20913 (1.160.214.144), 11/19/2017 00:14:13
24F:→ cons: 我是想到用一个static bool 初始是true11/19 19:47
25F:→ cons: print是"空白""值",true时只印值, 11/19 19:47
26F:→ cons: print後就把bool改true改false11/19 19:47
27F:→ cons: 和i大的说法是一样的11/19 19:49
就把flag改成bool 是这样吧
28F:推 alan23273850: 在靠清看到一样的题目耶XD 原PO是114 der? 11/19 21:53
对啊 但我不是CS
※ 编辑: yang20913 (101.10.97.140), 11/20/2017 01:52:39
29F:推 GYLin: 我在靠清有回你你有看吗 11/20 06:55
那不是我发的耶
不过我知道你是谁了!!
30F:→ alan23273850: 楼上暴露身份罗 嘻嘻11/20 08:19
抓到~
※ 编辑: yang20913 (101.10.97.140), 11/20/2017 09:14:15
31F:推 plsmaop: C++的话节点存vector,传vector的ref给递回式,最後forlo 11/20 20:27
32F:→ plsmaop: op输出vector的0到size()-2个,每输出一个就输出一个空 11/20 20:27
33F:→ plsmaop: 格,然後最後一个输出就不用加空格 11/20 20:27
34F:→ plsmaop: 啊soory没看到要在函式内 11/20 20:28
35F:→ Killercat: SQL command常常用到类似的东西 XD 11/25 09:07