From 6aa2820908ef6eb813520b58831a92707bf2ee37 Mon Sep 17 00:00:00 2001
From: "iliya.saroukha" <iliya.saroukhanian@etu.hesge.ch>
Date: Thu, 10 Apr 2025 17:44:45 +0200
Subject: [PATCH] feat: looks like known characters are working

---
 dyn_huffman.py | 23 ++++++++---------------
 1 file changed, 8 insertions(+), 15 deletions(-)

diff --git a/dyn_huffman.py b/dyn_huffman.py
index 8e69633..eb04d1e 100644
--- a/dyn_huffman.py
+++ b/dyn_huffman.py
@@ -13,21 +13,8 @@ class Node:
     right: Node | None = None
 
 
-def char_in_tree(tree: Node, char: str) -> Node | None:
-    if tree.left != None:
-        char_in_tree(tree.left, char)
-    elif tree.right != None: 
-        char_in_tree(tree.right, char)
-
-    if tree.value == char:
-        return tree
-    else:
-        return None
-
-
 def swap(tree: Node):
     if tree.left and tree.right:
-        # print("weeeeeeeeeeeeeeesh")
         if tree.left.weight > tree.right.weight:
             print(f'({tree.left.weight}, {tree.right.weight})')
             tmp = tree.right
@@ -35,13 +22,19 @@ def swap(tree: Node):
             tree.left = tmp
 
 def insert_char(tree: Node, char: str):
+    if tree.left:
+        if tree.left.value == char:
+            tree.left.weight += 1
+            tree.weight += 1
+            return
+
     # Leaf case
     if tree.left == None and tree.right == None:
         tree.left = Node()
         tree.right = Node(value=char, weight=1)
         tree.weight += 1
         return
-
+    
     if tree.left:
         if tree.left.value == 'NYT':
             insert_char(tree.left, char)
@@ -49,10 +42,10 @@ def insert_char(tree: Node, char: str):
             if tree.right:
                 insert_char(tree.right, char)
 
-
     tree.weight += 1
     swap(tree)
 
+
 def compute_vitter_params(m: int) -> (int, int):
     e = math.floor(np.log2(m))
     r = m - (2 ** e)
-- 
GitLab