コード例 #1
0
        void buildTree(minheap obj)
        {
            while (getSize(obj) >= 1)
            {
                if (top == null)
                {
                    huffman left  = obj.extractMin();
                    huffman right = obj.extractMin();
                    top = new huffman(left.data + right.data, '-');

                    top.left  = left;
                    top.right = right;

                    obj.insert(left.data + right.data, '-');
                }
                else
                {
                    huffman left  = obj.extractMin();
                    huffman right = top;

                    huffman obj_huff = new huffman(left.data + right.data, '-');
                    obj_huff.left  = left;
                    obj_huff.right = right;

                    top = obj_huff;


                    obj.insert(left.data + right.data, '-');
                }
            }
        }
コード例 #2
0
        void start(string str)
        {
            Dictionary <char, int> dict = freq(str);

            huffman[] arr = getArrayFromDict(dict);
            minheap   obj = new minheap(arr, arr.Length);

            buildTree(obj);
            printtree(top, "");
        }
コード例 #3
0
        int getSize(minheap obj)
        {
            int size = 0;

            for (int i = 0; i < obj.size; i++)
            {
                if (obj.arr[i].c == '-')
                {
                    ;
                }
                //size--;
                else
                {
                    size++;
                }
            }

            return(size);
        }