Tree: Huffman Decoding

Sort by

recency

|

82 Discussions

|

  • + 1 comment

    Unfortunately, this question does not currently work in JavaScript.

    Python and C++14 (among others) are given decodeHuff(root, s) as the function to modify and are given the Node class and its constructors, while JavaScript just gives you a meaningless processData(input) function.

    I worked with it, confused, for about 15 minutes before I tried it in another browser, then came to the Discussion posts here and realized the question was glitched.

    Please give us JavaScript users decodeHuff(root, s) as well. :) Would love to solve this problem as part of my interview prep. Thanks.

  • + 0 comments

    Yet another bunk question in the interview prep...

    This was my working solution lol:

    function processData(input) { console.log(input) }

  • + 0 comments
    void iter(node * root, std::string key, std::map<std::string, std::string> &dictionary){
    
    if(root == NULL){
        return;
    }
    
    if(root->data != '\0') {
        std::string s{root->data};
        dictionary[key] = s;
    }
    
    iter(root->left, key+"0", dictionary);
    iter(root->right, key+"1", dictionary);
    }
    
    void decode_huff(node * root, string s) {
    std::map<std::string, std::string> dictionary;   
    std::string binary = "";
    
    iter(root, binary, dictionary);
    
    binary="";
    
    for (char c : s){
        std::string str{c};
        binary = binary+str;
    
        if (dictionary.find(binary) != dictionary.end()) {
            std::cout <<dictionary[binary];
            binary="";
        }
    }
    }
    
  • + 0 comments
    void decode(String s, Node root) {
            String word = "";
            Node location = root;
            for(char i: s.toCharArray()){
           if(i == '0'){
            if (location.left.left ==null){
                word+=location.left.data;
                location = root;
            }else{
            location = location.left;
            }
           }
           else if(i=='1'){
            if (location.right.right ==null){
                word+=location.right.data;
                location = root;
            }else{
            location = location.right;
            }
           }
           } 
           System.out.print(word);
    
  • + 0 comments

    Python coders beware: when node.data does not contain a character, it is not an empty string or None. It is '\0'.

    This drove me nuts for 20 min until I read some discussions.

    I feel like this was a poor choice of "empty" string. Why not just set it to None or ""? I guess I learned something new about Python today but it had nothing to do with trees. Anyone disagree?