摘要: 本文介绍北京大学ACM网站2567号题目的解法。介绍部分基本翻译自网站上的题目介绍。题目介绍:给定一棵各节点编号为整数1,2,3...n的树(例如,无环连通图),其Prufer编码(Prufer code,不知道有没有标准的译法,用金山词霸没有查到,用Google也没有搜索到)构造方法如下:从树中去掉编号值最小的叶子节点(仅与一条边邻接的节点),以及与它邻接的边后,记下与它邻接的节点的编号。在树中重复这个过程,知道只剩下一个节点(总是编号为n的节点)为止。记下的n-1个编号序列就是树的Prufer编码。你的任务是计算给定的树的Prufer编码。树用下列语法表示: T-->(N S) S- 阅读全文
posted @ 2013-11-12 14:06 fly_ptt 阅读(519) 评论(0) 推荐(0) 编辑
摘要: prufer编码是用来表示一棵无根树的编码,如果树的节点为n个,那么编码的长度为n-2,一棵无根树只对应一个编码,一个编码只能得出一个无根树。编码方式是:这是一颗无根树,这课树的prufer编码为5,5,4,4,4,6。首先选这棵树叶子中编号最小的点,将这个点删除,并且把它的邻接点加入一个数组中,例如第一个删除的节点为1,并且把5加入数组中。删除节点后形成一棵新的树,再在新树中删除最小的节点,并且把邻接点加入数组中,,这样重复以上步骤,知道树中最后剩余两个点的时候终止操作。这时候数组中的便是prufer编码。由prufer编码来重建这棵树的方法是:假如prufer编码为(a1,a2,a3,a4 阅读全文
posted @ 2013-11-12 14:00 fly_ptt 阅读(295) 评论(0) 推荐(0) 编辑