0

圧縮/解凍の割り当てに取り組んでいます。圧縮ファイルのヘッダーから次の事前順序トラバーサルを使用してツリーを構築する C++ メソッドを作成しようとしています: 001c1b01a01e1d 0 は内部ノードを表し、1 はリーフを表します。ノードを作成するたびに、そのノードのコードを 0 または 1 に設定します。これは、別の方法を使用してツリーをデコードし、これらのコードを使用してさまざまな側面をトラバースする方法を知っている必要があるためです。事前注文トラバーサル文字列で 1 に到達するたびに、ノードの「シンボル」フィールドを事前注文文字列の次の文字に設定します。私はそれを機能させることはできません。誰でも助けることができますか?これが私のコードです(「bitsToRead」は予約注文文字列の長さを表すだけなので、メソッドはいつ停止するかを知っています)ありがとう!

void HCTree::buildFromHeader(ifstream& in, HCNode* n, int codeToUse) {

   if( bitsToRead > 0) {
      char c = in.get();
      bitsToRead--;
      if(c == '0') {
         n = new HCNode(0, 0, 0, 0, 0, codeToUse);
         if(rootSet == 0) {
            root = n;
            rootSet = true;
         }
         HCNode* left;
         n->c0 = left;
         HCNode* right;
         n->c1 = right;
         buildFromHeader(in, left, 0);
         buildFromHeader(in, right, 1);
      }
      else { 
         byte symbol = in.get();
         n = new HCNode(0, symbol, 0, 0, 0, codeToUse);
         bitsToRead--;
         n->c0 = n->c1 = NULL;
      }
   }
}
4

1 に答える 1