internal void BuildTree() { Debug.WriteLine($"{DateTime.Now:yyyy-MM-dd hh:mm:ss.fffff} {nameof(HuffmanEncoding)} Start BuildTree"); HuffmanNode nextNode; do { nextNode = GetNextTreeNode(); _nodes.Remove(nextNode.Left); _nodes.Remove(nextNode.Right); _nodes.Add(nextNode); } while (nextNode.Count < _totalSum); _rootNode = nextNode; Debug.WriteLine($"{DateTime.Now:yyyy-MM-dd hh:mm:ss.fffff} {nameof(HuffmanEncoding)} End BuildTree"); }
internal static List <HuffmanNode> GetLeafs(HuffmanNode n, List <HuffmanNode> nodes) { if (n == null) { return(nodes); } if (n.IsLeaf) { nodes.Add(n); return(nodes); } GetLeafs(n.Left, nodes); GetLeafs(n.Right, nodes); return(nodes); }