POJ 1635 Subway Tree Systems (Advanced Guide, Minimal Representation of Trees, Recursive Methods)
发布时间
阅读量:
阅读量
《算法竞赛进阶指南》第91页,树的最小表示
本题关键点:
1、树的最小表示,采用01字符串形式来描述一棵树(每个节点可拥有多个子节点)。
从根节点出发,对每条边进行两次遍历。每次经过边时记录一个0或1,最终将所有字符串拼接起来即为该树的01表示。
当从父节点移动至子节点时,使用'0'表示;而从子节点返回父节点时,则用'1'表示。
若某棵子树的根为father,其子节点依次为son[1]、son[2]、…、son[n],则遍历方式如下:
father前往son[1](标记为'0'),并递归遍历son[1]的所有子节点以生成一段01字符串;随后从son[1]返回father(标记为'1');
接着father前往son[2](标记为'0'),同样递归处理son[2]的所有子节点生成另一段字符串,并返回father(标记为'1');
依此类推,直到father前往son[n](标记为'0'),完成对所有子节点的处理后返回father(标记为'1')。
最终将所有生成的字符串连接起来,即可得到以father为根的子树对应的01表示。需要注意的是,在访问各个孩子节点时顺序可以任意调整,因此会得到多个不同的01字符串。其中字典序最小的那个即被视为整棵树的最小表示。
2、递归实现方法:
对于以father为根的树结构而言,其对应的01字符串s由各个孩子
全部评论 (0)
还没有任何评论哟~
