题目:Hire and Fire
题目翻译成数据结构就是:建树,加结点,删除结点,打印结点。只有删除结点稍微复杂点,因为删除设计掉树的调整。
首先要考虑树怎么存储才能使解题更顺手。
1.我们要存储每个结点的孩子,父亲和名字。存储孩子是因为第一个孩子可能会“升级”,存储父亲是因为要打印,名字肯定也是要打印的;
2.我们要知道每个结点的子树,删除结点会涉及调整;
3.我们要知道根节点,存放CEO。
所以我们的结点出来了,如下:
struct Tman { string name; Tman *father; list sons; };
思路都在注释里。
代码如下:
#include #include