Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oop 关于二叉树的访谈任务_Oop_Binary Tree - Fatal编程技术网

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。一种可能的方法是使用众所周知的事实:

我们可以从二叉树的序和前序构造唯一的二叉树 遍历


因此,我们可以让我们先按序遍历,然后按序遍历。检查此问题的答案。

对树进行序列化、传输和反序列化。