回 帖 发 新 帖 刷新版面

主题:关于用树解决unix目录输出的问题

Given a tree of UNIX directories and file/directory sizes, you are supposed to list them as a tree with proper indention and sizes.

Input Specification:
The input consists of several test cases.  Each case consists of several lines which represent the levels of the directory tree.  The first line contains the root file/directory.  If it is a directory, then its children will be listed in the second line, inside a pair of parentheses.  Similarly, if any of its children is a directory, then the contents of that directory will be listed in the next line, inside a pair of parentheses.  The format of a file/directory is: 
name size or *name size
where name, the name of the file/directory, is a string of no more than 10 characters; size > 0 is the integer size of the file/directory; * means the name is a directory.  It is guaranteed that name will not contain characters '(', ')', '[', ']', and '*'.  There are no more than 10 levels for each case, and no more than 10 files/directories on each level. 
Output Specification:
For each test case, list the tree in the format shown by the sample. Files/directories that are of depth d will have their names indented by 8d spaces.  Do NOT print tabs to indent the output.  The size of a directory D is the sum of the sizes of all the files/directories in D, plus its own size. 
Sample Input:
*/usr 1
(*mark 1 *alex 1)
(hw.c 3 *course 1) (hw.c 5)
(aa.txt 12)
*/usr 1
()

Sample Output: ( represents a space)
|_*/usr[24]
|_*mark[17]
||_hw.c[3]
||_*course[13]
||_aa.txt[12]
|_*alex[6]
|_hw.c[5]
|_*/usr[1]

其实就是要建一个树,然后先序遍历,输出结果,可是建树的过程就很麻烦,怎样输入并且建一个并不是二叉的复杂树,然后输出,晕!
哪位高人给予指点,多谢

回复列表 (共1个回复)

沙发

同在做这道题目 同不清楚怎么把输入转换成树 我同学是用了类似链表的东西解决的,而不是树  在这里等牛人

我来回复

您尚未登录,请登录后再回复。点此登录或注册