Oop 关于二叉树的访谈任务
任务:将服务器端二叉树传输到客户端 我在一次面试中得到了这个任务。有什么有效的方法可以做到这一点吗? 我自己对这项任务不太了解 这就是我想到的,但不确定服务器到客户端的传输。有什么想法吗Oop 关于二叉树的访谈任务,oop,binary-tree,Oop,Binary Tree,任务:将服务器端二叉树传输到客户端 我在一次面试中得到了这个任务。有什么有效的方法可以做到这一点吗? 我自己对这项任务不太了解 这就是我想到的,但不确定服务器到客户端的传输。有什么想法吗 void copyInOrder(TNode *orgTree, Tnode *& copyTree) { if(orgTree !=NULL){ //left side TNode newLeftNode = c
void copyInOrder(TNode *orgTree, Tnode *& copyTree)
{
if(orgTree !=NULL){
//left side
TNode newLeftNode = cloneNode(orgTree->left_link);
copyTree->left_link = newLeftNode;
copyInOrder(orgTree->left_link, copyTree->left_link);
//right side
TNode newRightNode = cloneNode(orgTree->right_link);
copyTree->right_link = newRightNode;
copyInOrder(orgTree->right_link, copyTree->right_link);
}
}
老实说,定义“高效”是很好的第一步。什么被认为是重要的?网络带宽?涉及服务器端计算吗?涉及客户端计算吗
同样,数据是什么
例如,如果数据是整数,并且网络带宽很重要,则可以从树中构造一个整数数组,以最小的开销传输该数组,然后在用户端将其转换回二叉树
如果服务器端负载是最重要的,那么您应该选择另一条路线。如果客户端加载,可能还有另一个
值得注意的是,由于这是一个面试问题,与面试官讨论他们认为什么对效率很重要,以及它对解决方案的影响可能与你提出的实际解决方案同样重要。对我来说,问题似乎与调动本身无关,但是如何将要传输的数据打包。要注意的是,由于您正在传输字节,而不是C++对象,所以在传输过程中,您将无法很容易地保存树的结构。p>
因此,我建议您先下载这棵树,然后通过网络发送。显然,您需要一个客户机知道的预定义序列化方案,以便客户机可以从接收到的字节重新创建树 只要演示如何将给定的二叉树T转换为值序列S,这样我们就可以在客户端从S重建T。一种可能的方法是使用众所周知的事实: 我们可以从二叉树的序和前序构造唯一的二叉树 遍历
因此,我们可以让我们先按序遍历,然后按序遍历。检查此问题的答案。对树进行序列化、传输和反序列化。