美文网首页
QuadTree Serialization/Deseriali

QuadTree Serialization/Deseriali

作者: 尚无花名 | 来源:发表于2019-05-16 21:33 被阅读0次
    class QuadTreeNode{
      QuadTreeNode[] children;
      int val;
      public QuadTreeNode(int val) {
       this.val = val;
      children = new QuadTreeNode[4];
      }
    }
    //为了简化,这里把Tree序列化成一个List<Object>这里 Object可以自己定义.
    //如果需要字符串,则直接用toString方法, 很容易把它序列化成string,
    class SerDeser {
       public List<Tuple> serialize(QuadTreeNode root) {
         List<Tuple> ans = new ArrayList<>();
         serHelper(root, ans);
         return ans; 
      }
      public void serHeper(QuadTreeNode node, List<Tuple> ans) {
         if (node == null) return;
         Tuple t = new Tuple(val);
         ans.add(t);
         
         for (int i = 0; i < 4; i++) {
            if (node.children[I] != null) {
              t.state += (1 << i);
              serHelper(node.children[i], ans)
            }
         }
      }
      public QuadTreeNode deserialize(List<Tuple> list) {
        int[] index = new int[1];
        return deserHelper(list, index);
      } 
      private QuadTreeNode deserHelper(List<Tuple> list, int[] index) {
        if (index[0] >= list.size()) return null;
        Tuple t = list.get(index[0]++);
        QuadTreeNode node = new QuadTreeNode(t.val);
        for (int i = 0; i < 4; I++) {
           if ((t.state & (1 << i)) > 0) node.children[i] = deserHelper(list, index);
        }
        return node;
      }
    }
    class Tuple {
      int val;
      int state;
      public Tuple(int val) {
         this.val = val;
         this.state = 0;
      }
      public String toString() {
        return t.val + "," + t.state;
      }
      public Tuple toTuple(String str) {
         if (str == null || str.length() == 0) return null;
         String[] vals = str.split(',');
         Tuple t = new Tuple(Integer.parseInt(vals[0]));
         t.state = Integer.parseInt(vals[1]);
        return t;
      }
    }
    
    

    相关文章

      网友评论

          本文标题:QuadTree Serialization/Deseriali

          本文链接:https://www.haomeiwen.com/subject/ooiwaqtx.html