考大家个新题 visitor reconstruct generic tree# JobHunting - 待字闺中
S*t
1 楼
看似是旧题,你仔细做就知道不是了。跟经典的重健二叉树的题有点类似,但要稍难些。
现在有个树的类,不让你直接知道树的结构,但是有一个visitor可以访问前
序和后序的节点,现在你要写一个你自己的visitor目的是重建树,给你一场面试的时
间你能写吗?
struct Node { ... };
class Tree {
public:
void Walk(TreeVisitor *visitor);
...
};
class TreeVisitor {
public:
virtual ~TreeVisitor();
virtual void PreOrder(const char *node_name, const char *node_value, bool is_leaf) = 0;
virtual void PostOrder(const char *node_name, const char *node_value, bool is_leaf) = 0;
};
现在你要做的是:
1 定义一个你自己的tree data structure (class MyTree)
2 写一个TreeVisitor的subclass来build一个和Tree有同样结构的MyTree
现在有个树的类,不让你直接知道树的结构,但是有一个visitor可以访问前
序和后序的节点,现在你要写一个你自己的visitor目的是重建树,给你一场面试的时
间你能写吗?
struct Node { ... };
class Tree {
public:
void Walk(TreeVisitor *visitor);
...
};
class TreeVisitor {
public:
virtual ~TreeVisitor();
virtual void PreOrder(const char *node_name, const char *node_value, bool is_leaf) = 0;
virtual void PostOrder(const char *node_name, const char *node_value, bool is_leaf) = 0;
};
现在你要做的是:
1 定义一个你自己的tree data structure (class MyTree)
2 写一个TreeVisitor的subclass来build一个和Tree有同样结构的MyTree