summaryrefslogtreecommitdiff
path: root/lib/HTree.cc
diff options
context:
space:
mode:
Diffstat (limited to 'lib/HTree.cc')
-rw-r--r--lib/HTree.cc40
1 files changed, 40 insertions, 0 deletions
diff --git a/lib/HTree.cc b/lib/HTree.cc
new file mode 100644
index 0000000..c651f48
--- /dev/null
+++ b/lib/HTree.cc
@@ -0,0 +1,40 @@
+#include <stdio.h>
+#include <iostream.h>
+#include "config.h"
+#include "HTree.h"
+
+HTree::HTree(int n_freq, char * n_objet) {
+ freq = n_freq;
+ objet = n_objet;
+ left = right = NULL;
+}
+
+HTree::HTree(HTree * n_left, HTree * n_right) {
+ left = n_left;
+ right = n_right;
+ freq = n_left->freq + n_right->freq;
+ objet = NULL;
+}
+
+HTree::~HTree() {
+ if (left) delete left;
+ if (right) delete right;
+}
+
+ostream & HTree::Trace(ostream & os, int d) {
+ static char cmpr[MAX_HDEPTH + 1];
+ if (objet) {
+ cmpr[d] = '\0';
+ os << objet << " = " << cmpr << endl;
+ } else {
+ if (left) {
+ cmpr[d] = '0';
+ left->Trace(os, d + 1);
+ }
+ if (right) {
+ cmpr[d] = '1';
+ right->Trace(os, d + 1);
+ }
+ }
+ return os;
+}