рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐
рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдореИрдВ рдЬрд╛рдиреЗ-рдорд╛рдиреЗ рд╣рдлрд╝рдореИрди рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реВрдВрдЧрд╛, рд╕рд╛рде рд╣реА рд╕рд╛рде рдбреЗрдЯрд╛ рдХрдВрдкреНрд░реЗрд╢рди рдореЗрдВ рдЗрд╕рдХреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рднреАред
рдирддреАрдЬрддрди, рд╣рдо рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдЕрднрд┐рд▓реЗрдЦрд╛рдЧрд╛рд░ рд▓рд┐рдЦреЗрдВрдЧреЗред
рд╣реИрдмреЗ рдкрд░ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ
рд▓реЗрдЦ рдерд╛, рд▓реЗрдХрд┐рди рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдмрд┐рдирд╛ред рд╡рд░реНрддрдорд╛рди рдкреЛрд╕реНрдЯ рдХреА рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рд╕рд╛рдордЧреНрд░реА рд╕реНрдХреВрд▓ рдХрдВрдкреНрдпреВрдЯрд░ рд╡рд┐рдЬреНрдЮрд╛рди рдХреЗ рдкрд╛рда рдФрд░ рд░реЙрдмрд░реНрдЯ рд▓реЙрд░ рдХреА рдкреБрд╕реНрддрдХ "рдбреЗрдЯрд╛ рд╕реНрдЯреНрд░рдХреНрдЪрд░реНрд╕ рдПрдВрдб рдЕрд▓реНрдЧреЛрд░рд┐рджреНрдо рдЗрди рдЬрд╛рд╡рд╛" рд╕реЗ рд▓реА рдЧрдИ рд╣реИред рддреЛ, рд╕рдм рдХреБрдЫ рдХрдЯреМрддреА рдХреЗ рддрд╣рдд рд╣реИ!
рдереЛрдбрд╝рд╛ рд╕реЛрдЪрд╛
рдПрдХ рд╕рд╛рджреЗ рдкрд╛рда рдлрд╝рд╛рдЗрд▓ рдореЗрдВ, рдПрдХ рд╡рд░реНрдг 8 рдмрд┐рдЯреНрд╕ (ASCII рдПрдиреНрдХреЛрдбрд┐рдВрдЧ) рдпрд╛ 16 (рдпреВрдирд┐рдХреЛрдб рдПрдиреНрдХреЛрдбрд┐рдВрдЧ) рдХреЗ рд╕рд╛рде рдПрдиреНрдХреЛрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рд╣рдо ASCII рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд▓рд╛рдЗрди s1 = "SUSIE SAYS IT IS EASY \ n" рдХреЛ рд▓реЗрдВред рдХреБрд▓ рдорд┐рд▓рд╛рдХрд░, рд▓рд╛рдЗрди рдореЗрдВ 22 рдЕрдХреНрд╖рд░ рд╣реИрдВ, рдЬрд╝рд╛рд╣рд┐рд░ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рдФрд░ рдиреНрдпреВрд▓рд╛рдЗрди рд╡рд░реНрдг рд╢рд╛рдорд┐рд▓ рд╣реИрдВ - '\ n'ред рдЗрд╕ рд▓рд╛рдЗрди рд╡рд╛рд▓реА рдлрд╛рдЗрд▓ рдХрд╛ рд╡рдЬрди 22 * тАЛтАЛ8 = 176 рдмрд┐рдЯреНрд╕ рд╣реЛрдЧрд╛ред рдкреНрд░рд╢реНрди рддреБрд░рдВрдд рдЙрдарддрд╛ рд╣реИ: рдХреНрдпрд╛ 1 рд╡рд░реНрдг рдХреЛ рдПрдирдХреЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рднреА 8 рдмрд┐рдЯреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рддрд░реНрдХрд╕рдВрдЧрдд рд╣реИ? рд╣рдо рд╕рднреА ASCII рд╡рд░реНрдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЕрдЧрд░ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдмрд╛рд░ рдкрддреНрд░ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рддрд░реНрдХрд╕рдВрдЧрдд рд╣реЛрдЧрд╛ - рдПрд╕ - рдХрдо рд╕реЗ рдХрдо рд╕рдВрднрд╡ рдХреЛрдб рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП, рдФрд░ рджреБрд░реНрд▓рдн рдкрддреНрд░ рдХреЗ рд▓рд┐рдП - рдЯреА (рдпрд╛ рдпреВ, рдпрд╛ 'рдПрди') - рдФрд░ рдЕрдзрд┐рдХ рдкреНрд░рд╛рдорд╛рдгрд┐рдХ рдХреЛрдб рджреЗрдиреЗ рдХреЗ рд▓рд┐рдПред рдпрд╣ рд╣рдлрд╝рдореИрди рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рд╣реИ: рдЖрдкрдХреЛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рд╡рд┐рдХрд▓реНрдк рдЦреЛрдЬрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдлрд╝рд╛рдЗрд▓ рдиреНрдпреВрдирддрдо рд╡рдЬрди рдХреА рд╣реЛрдЧреАред рдпрд╣ рдмрд┐рд▓реНрдХреБрд▓ рд╕рд╛рдорд╛рдиреНрдп рд╣реИ рдХрд┐ рдХреЛрдб рдХреА рд▓рдВрдмрд╛рдИ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╡рд░реНрдгреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╣реЛрдЧреА - рдпрд╣ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рдЖрдзрд╛рд░ рд╣реИред
рдХреЛрдбрд┐рдВрдЧ
рд╡рд░реНрдг рдХреЛ 'S' рдХреЛрдб рдХреНрдпреЛрдВ рдирд╣реАрдВ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, 1 рдмрд┐рдЯ рд▓рдВрдмрд╛: 0 рдпрд╛ 1. рдЗрд╕реЗ 1. рд╣реЛрдиреЗ рджреЗрдВред рдлрд┐рд░ рд╣рдо рджреВрд╕рд░рд╛ рд╕рдмрд╕реЗ рдЬреНрдпрд╛рджрд╛ рджрд┐рдпрд╛ рдЬрд╛рдиреЗ рд╡рд╛рд▓рд╛ рд╡рд░реНрдг рджреЗрдВрдЧреЗ - '' (рд╕реНрдкреЗрд╕) - 0. рдХрд▓реНрдкрдирд╛ рдХреАрдЬрд┐рдП, рдЖрдкрдиреЗ рдЕрдкрдирд╛ рд╕рдВрджреЗрд╢ рдбрд┐рдХреЛрдб рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ рд╣реИ - рдПрдиреНрдХреЛрдбреЗрдб рд╕реНрдЯреНрд░рд┐рдВрдЧ s1 - рдФрд░ рдЖрдк рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдХреЛрдб 1 рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред рддреЛ рдХреНрдпрд╛ рдХрд░реЗрдВ: рдХреНрдпрд╛ рдпрд╣ рдПрдХ рдЪрд░рд┐рддреНрд░ S рд╣реИ, рдпрд╛ рдпрд╣ рдХреБрдЫ рдЕрдиреНрдп рд╡рд░реНрдг рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП A? рдЗрд╕рд▓рд┐рдП, рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд┐рдпрдо рдЙрддреНрдкрдиреНрди рд╣реЛрддрд╛ рд╣реИ:
рдХреЛрдИ рднреА рдХреЛрдб рджреВрд╕рд░реЗ рдХрд╛ рдЙрдкрд╕рд░реНрдЧ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПрдпрд╣ рдирд┐рдпрдо рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреА рдХреБрдВрдЬреА рд╣реИред рдЗрд╕рд▓рд┐рдП, рдХреЛрдб рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдЖрд╡реГрддреНрддрд┐ рддрд╛рд▓рд┐рдХрд╛ рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ, рдЬреЛ рдкреНрд░рддреНрдпреЗрдХ рд╡рд░реНрдг рдХреА рдЖрд╡реГрддреНрддрд┐ (рдШрдЯрдирд╛рдУрдВ рдХреА рд╕рдВрдЦреНрдпрд╛) рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ:
рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдШрдЯрдирд╛рдУрдВ рд╡рд╛рд▓реЗ рдкрд╛рддреНрд░реЛрдВ рдХреЛ рдмрд┐рдЯреНрд╕ рдХреА рд╕рдмрд╕реЗ рдЫреЛрдЯреА
рд╕рдВрднрд╡ рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд╕рд╛рде рдПрдиреНрдХреЛрдб рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдореИрдВ рд╕рдВрднрд╛рд╡рд┐рдд рдХреЛрдб рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХрд╛ рдЙрджрд╛рд╣рд░рдг рджреВрдВрдЧрд╛:
рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдПрдиреНрдХреЛрдбреЗрдб рд╕рдВрджреЗрд╢ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:
10 01111 10 110 1111 00 10 010 1110 10 00 110 0110 00 110 10 00 1111 010 10 1110 01110
рдореИрдВрдиреЗ рдкреНрд░рддреНрдпреЗрдХ рд╡рд░реНрдг рдХреЗ рдХреЛрдб рдХреЛ рдПрдХ рд╕реНрдерд╛рди рдХреЗ рд╕рд╛рде рдЕрд▓рдЧ рдХрд░ рджрд┐рдпрд╛ред рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рд╕рдВрдкреАрдбрд╝рд┐рдд рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдирд╣реАрдВ рд╣реЛрдЧрд╛!
рд╕рд╡рд╛рд▓ рдЙрдарддрд╛ рд╣реИ:
рдпрд╣ рд╕рд▓рд╛рдЧрд╛ рдПрдХ рдХреЛрдб рдХреЗ рд╕рд╛рде рдХреИрд╕реЗ рдЖрдпрд╛ ? рдПрдХ рдХреЛрдб рддрд╛рд▓рд┐рдХрд╛ рдХреИрд╕реЗ рдмрдирд╛рдПрдВ? рдЗрд╕ рдкрд░ рдиреАрдЪреЗ рдЪрд░реНрдЪрд╛ рдХреА рдЬрд╛рдПрдЧреАред
рд╣рдлрдореИрди рдкреЗрдбрд╝ рдХрд╛ рдирд┐рд░реНрдорд╛рдг
рдпрд╣рд╛рдВ рдмрд╛рдЗрдирд░реА рд╕рд░реНрдЪ рдЯреНрд░реА рдмрдЪрд╛рд╡ рдХреЗ рд▓рд┐рдП рдЖрддреЗ рд╣реИрдВред рдЪрд┐рдВрддрд╛ рди рдХрд░реЗрдВ, рдпрд╣рд╛рдВ рдЦреЛрдЬ, рд╕рдореНрдорд┐рд▓рди рдФрд░ рд╣рдЯрд╛рдиреЗ рдХреЗ рддрд░реАрдХреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдпрд╣рд╛рдБ рдЬрд╛рд╡рд╛ рдореЗрдВ рдкреЗрдбрд╝ рдХреА рд╕рдВрд░рдЪрдирд╛ рд╣реИ:
public class Node { private int frequence; private char letter; private Node leftChild; private Node rightChild; ... }
class BinaryTree { private Node root; public BinaryTree() { root = new Node(); } public BinaryTree(Node root) { this.root = root; } ... }
рдпрд╣ рдПрдХ рдкреВрд░реНрдг рдХреЛрдб рдирд╣реАрдВ рд╣реИ, рдкреВрд░реНрдг рдХреЛрдб рдиреАрдЪреЗ рд╣реЛрдЧрд╛ред
рдпрд╣рд╛рдБ рдЯреНрд░реА рдмрд┐рд▓реНрдбрд┐рдВрдЧ рдПрд▓реНрдЧреЛрд░рд┐рдердо рд╣реИ:
- рд╕рдВрджреЗрд╢ (рдкрдВрдХреНрддрд┐ s1) рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рд╡рд░реНрдг рдХреЗ рд▓рд┐рдП рдПрдХ рдиреЛрдб рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдПрдВред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, 9 рдиреЛрдбреНрд╕ (рдиреЛрдб рдСрдмреНрдЬреЗрдХреНрдЯ) рд╣реЛрдВрдЧреЗред рдкреНрд░рддреНрдпреЗрдХ рдиреЛрдб рдореЗрдВ рджреЛ рдбреЗрдЯрд╛ рдлрд╝реАрд▓реНрдб рд╣реЛрддреЗ рд╣реИрдВ: рдкреНрд░рддреАрдХ рдФрд░ рдЖрд╡реГрддреНрддрд┐
- рдкреНрд░рддреНрдпреЗрдХ рдиреЛрдб рдиреЛрдбреНрд╕ рдХреЗ рд▓рд┐рдП рдЯреНрд░реА рдСрдмреНрдЬреЗрдХреНрдЯ (рдмрд╛рдЗрдирд░реАрдЯреНрд░реА) рдмрдирд╛рдПрдВред рдиреЛрдб рд╡реГрдХреНрд╖ рдХреА рдЬрдбрд╝ рдмрди рдЬрд╛рддрд╛ рд╣реИред
- рдЗрди рдкреЗрдбрд╝реЛрдВ рдХреЛ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдХрддрд╛рд░ рдореЗрдВ рдЪрд┐рдкрдХрд╛рдПрдВред рдЖрд╡реГрддреНрддрд┐ рдЬрд┐рддрдиреА рдХрдо рд╣реЛрдЧреА, рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдЙрддрдиреА рд╣реА рдЕрдзрд┐рдХ рд╣реЛрдЧреАред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЬрдм рдирд┐рдХрд╛рд▓рдиреЗ, dervo рд╣рдореЗрд╢рд╛ рд╕рдмрд╕реЗ рдХрдо рдЖрд╡реГрддреНрддрд┐ рдХреЗ рд╕рд╛рде рдЪреБрдирд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЕрдЧрд▓рд╛, рдЖрдкрдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЪрдХреНрд░рд╡рд╛рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
- рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдХрддрд╛рд░ рд╕реЗ рджреЛ рдкреЗрдбрд╝ рдирд┐рдХрд╛рд▓реЗрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдирдП рдиреЛрдб (рдПрдХ рдкрддреНрд░ рдХреЗ рдмрд┐рдирд╛ рдирд╡ рдирд┐рд░реНрдорд┐рдд рдиреЛрдб) рдХреЗ рд╡рдВрд╢рдЬ рдмрдирд╛рдПрдВред рдирдП рдиреЛрдб рдХреА рдЖрд╡реГрддреНрддрд┐ рджреЛ рд╡рдВрд╢рдЬ рдкреЗрдбрд╝реЛрдВ рдХреА рдЖрд╡реГрддреНрддрд┐рдпреЛрдВ рдХреЗ рдпреЛрдЧ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИред
- рдЗрд╕ рдиреЛрдб рдХреЗ рд▓рд┐рдП, рдЗрд╕ рдиреЛрдб рдореЗрдВ рдПрдХ рдЬрдбрд╝ рдХреЗ рд╕рд╛рде рдПрдХ рдкреЗрдбрд╝ рдмрдирд╛рдПрдВред рдЗрд╕ рдкреЗрдбрд╝ рдХреЛ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдХрддрд╛рд░ рдореЗрдВ рд╡рд╛рдкрд╕ рдЪрд┐рдкрдХрд╛рдПрдБред (рдЪреВрдВрдХрд┐ рдкреЗрдбрд╝ рдореЗрдВ рдПрдХ рдирдИ рдЖрд╡реГрддреНрддрд┐ рд╣реЛрддреА рд╣реИ, рддреЛ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХрддрд╛рд░ рдореЗрдВ рдПрдХ рдирдП рд╕реНрдерд╛рди рдкрд░ рдкрд╣реБрдВрдЪ рдЬрд╛рдПрдЧрд╛)
- рдЪрд░рдг 1 рдФрд░ 2 рдХреЛ рдЬрд╛рд░реА рд░рдЦреЗрдВ рдЬрдм рддрдХ рдХрд┐ рдХрддрд╛рд░ рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рд╣реА рдкреЗрдбрд╝ рди рдмрдЪрд╛ рд╣реЛ - рд╣рдлрд╝рдореИрди рдкреЗрдбрд╝
рд▓рд╛рдЗрди s1 рдкрд░ рдЗрд╕ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:

рдпрд╣рд╛рдБ, рдкреНрд░рддреАрдХ "lf" (рд▓рд╛рдЗрдирдлреАрдб) рдПрдХ рдирдИ рд▓рд╛рдЗрди рдореЗрдВ рд╕рдВрдХреНрд░рдордг рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ, "sp" (рд╕реНрдкреЗрд╕) рдПрдХ рд╕реНрдкреЗрд╕ рд╣реИред
рдЖрдЧреЗ рдХреНрдпрд╛ рд╣реИ?
рд╣рдореЗрдВ рд╣рдлрд╝рдореИрди рдХрд╛ рдкреЗрдбрд╝ рдорд┐рд▓рд╛ред рдЕрдЪреНрдЫрд╛, рдареАрдХ рд╣реИред рдФрд░ рдЗрд╕рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИ?
рд╡реЗ рдЗрд╕реЗ рдореБрдлреНрдд рдореЗрдВ рдирд╣реАрдВ рд▓реЗ рд╕рдХрддреЗред рдФрд░ рдлрд┐рд░, рдЖрдкрдХреЛ рд░реВрдЯ рд╕реЗ рд▓реЗрдХрд░ рдкреЗрдбрд╝ рдХреА рдкрддреНрддрд┐рдпреЛрдВ рддрдХ рд╕рднреА рд╕рдВрднрд╛рд╡рд┐рдд рд░рд╛рд╕реНрддреЛрдВ рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдЖрдЗрдП рд╣рдо рдХрд┐рдирд╛рд░реЗ рдХреЛ рдирд╛рдорд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╣рдордд рд╣реЛрдВ 0 рдпрджрд┐ рдпрд╣ рдмрд╛рдПрдВ рд╡рдВрд╢рдЬ рдХреА рдУрд░ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ 1 рдЕрдЧрд░ рджрд╛рдИрдВ рдУрд░ред рдХрдбрд╝рд╛рдИ рд╕реЗ рдмреЛрд▓рддреЗ рд╣реБрдП, рдЗрди рд╕реВрдЪрдирд╛рдУрдВ рдореЗрдВ, рдкреНрд░рддреАрдХ рдХреЛрдб рдкреЗрдбрд╝ рдХреА рдЬрдбрд╝ рд╕реЗ рдЪрд╛рджрд░ рддрдХ рдХрд╛ рдорд╛рд░реНрдЧ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдпрд╣ рд╕рдорд╛рди рдкреНрд░рддреАрдХ рд╣реИред

рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдХреЛрдб рдХреА рддрд╛рд▓рд┐рдХрд╛ рдмрджрд▓ рдЧрдИред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдпрджрд┐ рд╣рдо рдЗрд╕ рддрд╛рд▓рд┐рдХрд╛ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдкреНрд░рддреНрдпреЗрдХ рд╡рд░реНрдг рдХреЗ "рд╡рдЬрди" рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд┐рд╖реНрдХрд░реНрд╖ рдирд┐рдХрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВ - рдпрд╣ рдЙрд╕рдХреЗ рдХреЛрдб рдХреА рд▓рдВрдмрд╛рдИ рд╣реИред рдлрд┐рд░ рд╕рдВрдкреАрдбрд╝рд┐рдд рдлрд╝рд╛рдЗрд▓ рдХрд╛ рд╡рдЬрди рд╣реЛрдЧрд╛: 2 * 3 + 2 * 4 + 3 * 3 + 6 * 2 + 1 * 4 + 1 * 5 + 2 * 4 + 4 * 2 + 1 * 5 = 65 рдмрд┐рдЯреНрд╕ред рд╢реБрд░реВ рдореЗрдВ рдЗрд╕рдХрд╛ рд╡рдЬрди 176 рдмрд┐рдЯреНрд╕ рдерд╛ред рдЗрд╕рд▓рд┐рдП, рд╣рдордиреЗ рдЗрд╕реЗ 176/65 = 2.7 рдЧреБрдирд╛ рддрдХ рдШрдЯрд╛ рджрд┐рдпрд╛! рд▓реЗрдХрд┐рди рдпрд╣ рдпреВрдЯреЛрдкрд┐рдпрд╛ рд╣реИред рдРрд╕рд╛ рдЧреБрдгрд╛рдВрдХ рдкреНрд░рд╛рдкреНрдд рд╣реЛрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИред рдХреНрдпреЛрдВ? рдЗрд╕ рдкрд░ рдереЛрдбрд╝реА рджреЗрд░ рдмрд╛рдж рдЪрд░реНрдЪрд╛ рдХреА рдЬрд╛рдПрдЧреАред
рдбрд┐рдХреЛрдбрд┐рдВрдЧ
рдЦреИрд░, рд╢рд╛рдпрдж рд╕рдмрд╕реЗ рд╕рд░рд▓ рдмрд╛рдд рдЫреЛрдбрд╝ рджреА рдЧрдИ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдореЗрдВ рд╕реЗ рдХрдИ рд▓реЛрдЧреЛрдВ рдиреЗ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдпрд╛ рд╣реИ рдХрд┐ рдмрд┐рдирд╛ рдХрд┐рд╕реА рд╕рдВрдХреЗрдд рдХреЗ рдХреЗрд╡рд▓ рдПрдХ рд╕рдВрдкреАрдбрд╝рд┐рдд рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИ, рдЬрд┐рд╕реЗ рдХреВрдЯрдмрджреНрдз рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ - рд╣рдо рдЗрд╕реЗ рдбрд┐рдХреЛрдб рдирд╣реАрдВ рдХрд░ рдкрд╛рдПрдВрдЧреЗ! рд╣рд╛рдВ, рдпрд╣ рдорд╣рд╕реВрд╕ рдХрд░рдирд╛ рдореЗрд░реЗ рд▓рд┐рдП рдХрдард┐рди рдерд╛, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдПрдХ рдЯреЗрдХреНрд╕реНрдЯ рдлрд╛рдЗрд▓ рдЯреЗрдмрд▓ рдмрдирд╛рдирд╛ рдкрдбрд╝рд╛ред рдПрдХ рдХрдореНрдкреНрд░реЗрд╢рди рдЯреЗрдмрд▓ рдХреЗ рд╕рд╛рдеред
01110 00 A010 E1111 I110 S10 T0110 U01111 Y1110
рддрд╛рд▓рд┐рдХрд╛ рдХреЛ 'рдЪрд░рд┐рддреНрд░' "рд╡рд░реНрдг рдХреЛрдб" рдХреЗ рд░реВрдк рдореЗрдВ рд░рд┐рдХреЙрд░реНрдб рдХрд░реЗрдВред рдПрдХ рд╡рд░реНрдг рдХреЗ рдмрд┐рдирд╛ 01110 рдХреНрдпреЛрдВ рд╣реИ? рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрд╣ рдПрдХ рдкреНрд░рддреАрдХ рдХреЗ рд╕рд╛рде рд╣реИ, рдмрд╕ рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдЬрд╛рд╡рд╛ рдЙрдкрдХрд░рдг рдЬрдм рдПрдХ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рдЖрдЙрдЯрдкреБрдЯ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ newline рд╡рд░реНрдг - '\ n' - рдХреЛ рдПрдХ рдирдИ рдкрдВрдХреНрддрд┐ рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рдХрд┐ рдпрд╣ рдХрд┐рддрдирд╛ рдмреЗрд╡рдХреВрдл рд▓рдЧрддрд╛ рд╣реИ)ред рдЗрд╕рд▓рд┐рдП, рд╢реАрд░реНрд╖ рдкрд░ рдЦрд╛рд▓реА рд░реЗрдЦрд╛ рдХреЛрдб 01110 рдХреЗ рд▓рд┐рдП рд╡рд░реНрдг рд╣реИред рдХреЛрдб 00 рдХреЗ рд▓рд┐рдП, рд╡рд░реНрдг рдкрдВрдХреНрддрд┐ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдПрдХ рд╕реНрдерд╛рди рд╣реИред рдореБрдЭреЗ рддреБрд░рдВрдд рдХрд╣рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдЗрд╕ рддрд╛рд▓рд┐рдХрд╛ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХрд╛
рд╣рдорд╛рд░рд╛ рддрд░реАрдХрд╛ рд╕рдмрд╕реЗ рддрд░реНрдХрд╣реАрди рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЗрд╕реЗ рд╕рдордЭрдирд╛ рдФрд░ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╕рд░рд▓ рд╣реИред рдЕрдиреБрдХреВрд▓рди рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рдЖрдкрдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢реЗрдВ рд╕реБрдирдХрд░ рдореБрдЭреЗ рдкреНрд░рд╕рдиреНрдирддрд╛ рд╣реЛрдЧреАред
рдЗрд╕ рддрд╛рд▓рд┐рдХрд╛ рдХреЛ рдбрд┐рдХреЛрдб рдХрд░рдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИред рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдмрдирд╛рддреЗ рд╕рдордп рд╣рдореЗрдВ рдХрд┐рд╕ рдирд┐рдпрдо рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдЙрд╕реЗ рдпрд╛рдж рдХрд░реЗрдВ:
рдХрд┐рд╕реА рднреА рдХреЛрдб рдХреЛ рджреВрд╕рд░рд╛ рдЙрдкрд╕рд░реНрдЧ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПрдпрд╣ рд╡рд╣ рдЬрдЧрд╣ рд╣реИ рдЬрд╣рд╛рдБ рдпрд╣ рдПрдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рднреВрдорд┐рдХрд╛ рдирд┐рднрд╛рддрд╛ рд╣реИред рд╣рдо рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рдмрд┐рдЯ рджреНрд╡рд╛рд░рд╛ рдкрдврд╝рддреЗ рд╣реИрдВ рдФрд░, рдЬреИрд╕реЗ рд╣реА рдкреНрд░рд╛рдкреНрдд рд╕реНрдЯреНрд░рд┐рдВрдЧ рдбреА, рд░реАрдб рдмрд┐рдЯреНрд╕ рд╕реЗ рдорд┐рд▓рдХрд░ рдмрдирддрд╛ рд╣реИ, рдЪрд░рд┐рддреНрд░ рдЪрд░рд┐рддреНрд░ рдХреЗ рдЕрдиреБрд░реВрдк рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИ, рд╣рдо рддреБрд░рдВрдд рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдЪрд░рд┐рддреНрд░ рдЪрд░рд┐рддреНрд░ рдПрдиреНрдХреЛрдбреЗрдб рдерд╛ (рдФрд░ рдХреЗрд╡рд▓ рдпрд╣!)ред рдЗрд╕рдХреЗ рдмрд╛рдж, рд╣рдо рдбрд┐рдХреЛрдбрд┐рдВрдЧ рд▓рд╛рдЗрди (рдбрд┐рдХреЛрдб рдХрд┐рдП рдЧрдП рд╕рдВрджреЗрд╢ рд╡рд╛рд▓реА рд▓рд╛рдЗрди) рдореЗрдВ рд╡рд░реНрдг рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рд▓рд╛рдЗрди d рдХреЛ рд╢реВрдиреНрдп рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдлрд┐рд░ рдПрдиреНрдХреЛрдбреЗрдб рдлрд╝рд╛рдЗрд▓ рдХреЛ рдкрдврд╝рддреЗ рд╣реИрдВред
рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди
рдпрд╣ рдПрдХ рдЕрднрд┐рд▓реЗрдЦрд╛рдЧрд╛рд░ рд▓рд┐рдЦрдХрд░
рдореЗрд░реЗ рдХреЛрдб рдХреЛ
рдЕрдкрдорд╛рдирд┐рдд рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рд╣реИред рдЪрд▓реЛ рдЗрд╕реЗ рдХрдВрдкреНрд░реЗрд╕рд░ рдХрд╣рддреЗ рд╣реИрдВред
рд╢реБрд░реВ рд╕реЗ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рдиреЛрдб рд╡рд░реНрдЧ рд▓рд┐рдЦрддреЗ рд╣реИрдВ:
public class Node { private int frequence;
рдЕрдм рдкреЗрдбрд╝:
class BinaryTree { private Node root; public BinaryTree() { root = new Node(); } public BinaryTree(Node root) { this.root = root; } public int getFrequence() { return root.getFrequence(); } public Node getRoot() { return root; } }
рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдХрддрд╛рд░:
import java.util.ArrayList;
рд╡рд╣ рд╡рд░реНрдЧ рдЬреЛ рд╣рдлрд╝рдореИрди рд╡реГрдХреНрд╖ рдмрдирд╛рддрд╛ рд╣реИ:
public class HuffmanTree { private final byte ENCODING_TABLE_SIZE = 127;
рд╡рд╣ рд╡рд░реНрдЧ рдЬрд┐рд╕рдореЗрдВ рдПрдирдХреЛрдб / рдбреАрдХреЛрдб рд╣реИ:
public class HuffmanOperator { private final byte ENCODING_TABLE_SIZE = 127;
рд╡рд╣ рд╡рд░реНрдЧ рдЬреЛ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд▓рд┐рдЦрдиреЗ рдХреА рд╕реБрд╡рд┐рдзрд╛ рджреЗрддрд╛ рд╣реИ:
import java.io.File; import java.io.PrintWriter; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.Closeable; public class FileOutputHelper implements Closeable { private File outputFile; private FileOutputStream fileOutputStream; public FileOutputHelper(File file) throws FileNotFoundException { outputFile = file; fileOutputStream = new FileOutputStream(outputFile); } public void writeByte(byte msg) throws IOException { fileOutputStream.write(msg); } public void writeBytes(byte[] msg) throws IOException { fileOutputStream.write(msg); } public void writeString(String msg) { try (PrintWriter pw = new PrintWriter(outputFile)) { pw.write(msg); } catch (FileNotFoundException e) { System.out.println(" , !"); } } @Override public void close() throws IOException { fileOutputStream.close(); } public void finalize() throws IOException { close(); } }
рдПрдХ рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдкрдврд╝рдиреЗ рдХреА рд╕реБрд╡рд┐рдзрд╛ рджреЗрдиреЗ рд╡рд╛рд▓рд╛ рд╡рд░реНрдЧ:
import java.io.FileInputStream; import java.io.EOFException; import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.Closeable; import java.io.File; import java.io.IOException; public class FileInputHelper implements Closeable { private FileInputStream fileInputStream; private BufferedReader fileBufferedReader; public FileInputHelper(File file) throws IOException { fileInputStream = new FileInputStream(file); fileBufferedReader = new BufferedReader(new InputStreamReader(fileInputStream)); } public byte readByte() throws IOException { int cur = fileInputStream.read(); if (cur == -1)
рдЦреИрд░, рдФрд░ рдореБрдЦреНрдп рд╡рд░реНрдЧ:
import java.io.File; import java.nio.charset.MalformedInputException; import java.io.FileNotFoundException; import java.io.IOException; import java.nio.file.Files; import java.nio.file.NoSuchFileException; import java.nio.file.Paths; import java.util.List; import java.io.EOFException; public class Main { private static final byte ENCODING_TABLE_SIZE = 127; public static void main(String[] args) throws IOException { try {
Readme.txt рдирд┐рд░реНрджреЗрд╢ рдлрд╝рд╛рдЗрд▓ рдЕрдкрдиреЗ рдЖрдк рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ :-)
рдирд┐рд╖реНрдХрд░реНрд╖
рд╢рд╛рдпрдж рдпрд╣реА рд╕рдм рдореИрдВ рдХрд╣рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХреЛрдб рдореЗрдВ рд╕реБрдзрд╛рд░
рдХреА рдореЗрд░реА рдЕрдХреНрд╖рдорддрд╛ , рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдФрд░ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдХрд┐рд╕реА рднреА рдЕрдиреБрдХреВрд▓рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдХрд╣рдирд╛ рд╣реИ, рддреЛ рдмреЗрдЭрд┐рдЭрдХ рд▓рд┐рдЦреЗрдВред рдЕрдЧрд░ рдореБрдЭреЗ рдХреБрдЫ рдЧрд▓рдд рд▓рдЧрд╛, рддреЛ рднреА рд▓рд┐рдЦрд┐рдПред рдореБрдЭреЗ рдЖрдкрдХреА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рд╕реБрдирдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛрдЧреА!
рдкреБрдирд╢реНрдЪ
рд╣рд╛рдВ, рд╣рд╛рдВ, рдореИрдВ рдЕрднреА рднреА рдпрд╣рд╛рдВ рд╣реВрдВ, рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдЧреБрдгрд╛рдВрдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рднреВрд▓рддрд╛ рдерд╛ред рд╕реНрдЯреНрд░рд┐рдВрдЧ s1 рдХреЗ рд▓рд┐рдП, рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рддрд╛рд▓рд┐рдХрд╛ рдХрд╛ рд╡рдЬрди 48 рдмрд╛рдЗрдЯреНрд╕ рд╣реЛрддрд╛ рд╣реИ - рдореВрд▓ рдлрд╝рд╛рдЗрд▓ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ, рдФрд░ рд╡реЗ рдЕрддрд┐рд░рд┐рдХреНрдд рд╢реВрдиреНрдп рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рднреВрд▓рддреЗ рдереЗ (рдЬреЛрдбрд╝рд╛ рд╢реВрдиреНрдп рдХреА рд╕рдВрдЦреНрдпрд╛ 7 рд╣реИ) => рд╕рдВрдкреАрдбрд╝рди рдЕрдиреБрдкрд╛рдд рдПрдХ рд╕реЗ рдХрдо рд╣реЛрдЧрд╛: 176 / (65 + 48 * 8 + 7) = 0.38ред рдЕрдЧрд░ рдЖрдкрдиреЗ рднреА рдЗрд╕ рдкрд░ рдЧреМрд░ рдХрд┐рдпрд╛ рд╣реИ, рддреЛ
рд╕рд┐рд░реНрдл рдЙрд╕ рдЪреЗрд╣рд░реЗ рдкрд░ рдирд╣реАрдВ, рдЬрд┐рд╕ рдкрд░ рдЖрдк рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВред рд╣рд╛рдВ, рдпрд╣ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЫреЛрдЯреА рдлрд╛рдЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдмреЗрд╣рдж рдЕрдХреНрд╖рдо рд╣реЛрдЧрд╛ред рд▓реЗрдХрд┐рди рдмрдбрд╝реА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ? рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЖрдХрд╛рд░ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рдЖрдХрд╛рд░ рд╕реЗ рдЕрдзрд┐рдХ рд╣реИред рдпрд╣рд╛рдБ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдЬреИрд╕рд╛ рдХрд┐ рдЗрд╕реЗ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП! рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП,
рдлреЙрд╕реНрдЯ рдореЛрдиреЛрд▓реЙрдЧ рдХреЗ рд▓рд┐рдП, рдЕрднрд┐рд▓реЗрдЦрд╛рдЧрд╛рд░ 1.46 рдХреЗ рдмрд░рд╛рдмрд░ рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ (рдЖрджрд░реНрд╢ рдирд╣реАрдВ) рдЧреБрдгрд╛рдВрдХ рджреЗрддрд╛ рд╣реИ - рд▓рдЧрднрдЧ рдбреЗрдврд╝ рдЧреБрдирд╛! рдФрд░ рд╣рд╛рдБ, рдлрд╝рд╛рдЗрд▓ рдЕрдВрдЧреНрд░реЗрдЬреА рдореЗрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП рдереАред