任务:将服务器端二叉树传输到客户端。
我在面试中得到了这个任务。有什么有效的方法可以做到这一点? 我自己不太了解这项任务。
这是我想出的,但不确定服务器到客户端的传输。有什么想法吗?
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);
}
}
请您参考如下方法:
老实说,定义“高效”是很好的第一步。什么被认为是重要的?网络带宽?涉及服务器端计算?涉及客户端计算?
同理,数据是什么?
例如,如果数据是整数并且网络带宽很重要,您可以从树中构建一个整数数组,以最小的开销传输它,然后在用户端将其转换回二叉树。
如果服务器端负载是最重要的事情,您会选择不同的路线。如果客户端加载,可能还有另一个。
值得注意的是,由于这是一个面试问题,与面试官讨论他们认为对效率很重要的因素以及它如何影响解决方案可能与您提出的实际解决方案一样重要。