// pre-order traversal private void ReadRecursively(DataInput @in, TernaryTreeNode node) { node.splitchar = @in.ReadString().First(); sbyte mask = (sbyte)@in.ReadByte(); if ((mask & HAS_TOKEN) != 0) { node.token = @in.ReadString(); } if ((mask & HAS_VALUE) != 0) { node.val = Convert.ToInt64(@in.ReadLong()); } if ((mask & LO_KID) != 0) { node.loKid = new TernaryTreeNode(); ReadRecursively(@in, node.loKid); } if ((mask & EQ_KID) != 0) { node.eqKid = new TernaryTreeNode(); ReadRecursively(@in, node.eqKid); } if ((mask & HI_KID) != 0) { node.hiKid = new TernaryTreeNode(); ReadRecursively(@in, node.hiKid); } }
private void ReadRecursively(DataInput @in, JaspellTernarySearchTrie.TSTNode node) { node.splitchar = @in.ReadString()[0]; sbyte mask = (sbyte)@in.ReadByte(); if ((mask & HAS_VALUE) != 0) { node.data = Convert.ToInt64(@in.ReadLong()); } if ((mask & LO_KID) != 0) { var kid = new JaspellTernarySearchTrie.TSTNode(trie, '\0', node); node.relatives[JaspellTernarySearchTrie.TSTNode.LOKID] = kid; ReadRecursively(@in, kid); } if ((mask & EQ_KID) != 0) { var kid = new JaspellTernarySearchTrie.TSTNode(trie, '\0', node); node.relatives[JaspellTernarySearchTrie.TSTNode.EQKID] = kid; ReadRecursively(@in, kid); } if ((mask & HI_KID) != 0) { var kid = new JaspellTernarySearchTrie.TSTNode(trie, '\0', node); node.relatives[JaspellTernarySearchTrie.TSTNode.HIKID] = kid; ReadRecursively(@in, kid); } }