рдПрдП-рдЯреНрд░реА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ, рдпрд╣ рдХрд╣рд╛ рдЧрдпрд╛ рдерд╛ рдХрд┐ "рдЕрддрд┐рд░рд┐рдХреНрдд рдкреНрд░рддрд┐рдмрдВрдз рдХреЗ рдХрд╛рд░рдг, рд╕рдВрдЪрд╛рд▓рди рд▓рд╛рд▓-рдХрд╛рд▓реЗ рдкреЗрдбрд╝реЛрдВ (рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдорд╛рдорд▓реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдХрдо рдХрд░рдХреЗ) рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЖрд╕рд╛рди рд╣реИред"
рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрдП рдкреЗрдбрд╝ рдПрдХ рдЕрд▓рдЧ рд▓реЗрдЦ рдХреЗ рд╣рдХрджрд╛рд░ рд╣реИрдВред
рдХреНрдпреЛрдВ?
рдХреНрдпреЛрдВрдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣ рдПрдХ рд╕рд░рд▓ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╕рд╛рде рд╕рдмрд╕реЗ рддреЗрдЬрд╝ (рдпрд╛ рд╕рдмрд╕реЗ рддреЗрдЬрд╝) рдмрд╛рдЗрдирд░реА рдЯреНрд░реА рд╣реИред
рдореИрдВ рдПрд╡реАрдПрд▓ рдФрд░ рд▓рд╛рд▓-рдХрд╛рд▓реЗ рдкреЗрдбрд╝ рдореЗрдВ рд╕рдореНрдорд┐рд▓рди рдФрд░ рд╡рд┐рд▓реЛрдкрди рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рд▓реЗрдЦ рдХреЗ рджрд╛рдпрд░реЗ рдХреЗ рдмрд╛рд╣рд░ рдЫреЛрдбрд╝ рджреВрдВрдЧрд╛, рд▓реЗрдХрд┐рди рдПрдХ рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ, рдЙрдирдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рддреБрдЪреНрдЫ рдирд╣реАрдВ рд╣реИред рдХреНрдпреЛрдВ?
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ, рдПрдХ рджреНрд╡рд┐рдЖрдзрд╛рд░реА рдкреЗрдбрд╝ рдХреА рдореБрдЦреНрдп рд╕рдорд╕реНрдпрд╛ рдЗрд╕рдХрд╛ рд╕рдВрддреБрд▓рди рд╣реИ, рдЕрд░реНрдерд╛рдд, рдПрдХ рдирд┐рдпрдорд┐рдд рд░реВрдк рд╕реЗ рдЬреБрдбрд╝реА рд╣реБрдИ рд╕реВрдЪреА рдореЗрдВ рдЕрдз: рдкрддрди рдХреЗ рдкреНрд░рддрд┐рд░реВрдкред рдЖрдорддреМрд░ рдкрд░, рдЬрдм рдПрдХ рдкреЗрдбрд╝ рдХреЛ рд╕рдВрддреБрд▓рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╡рд░реНрдЯрд┐рдХрд▓ рдХреА рдкрд╛рд░рд╕реНрдкрд░рд┐рдХ рд╡реНрдпрд╡рд╕реНрдерд╛ рдХреЗ рд▓рд┐рдП рдХрдИ рд╡рд┐рдХрд▓реНрдк рд╣реЛрддреЗ рд╣реИрдВ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреЛ рдЕрд▓рдЧ рд╕реЗ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдореЗрдВ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдПрдП-рдЯреНрд░реА рдХрд╛ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдЕрд░реНрдиреЗ рдПрдВрдбрд░рд╕рди рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдХрд┐ рдкреЗрдбрд╝ рдХреЗ рд╕рдВрддреБрд▓рди рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдХрд┐рд╕реА рдХреЛ рдПрдХ рд╢реАрд░реНрд╖ рд╕реНрддрд░ рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рдХреЛ рдкреЗрд╢ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдпрджрд┐ рдЖрдк рдПрдХ рдкреЗрдбрд╝ рдХреА рдЬрдбрд╝ рд╕реЗ рдКрдкрд░ рд╕реЗ рдиреАрдЪреЗ рдХреА рдУрд░ рдмрдврд╝рдиреЗ рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░рддреЗ рд╣реИрдВ (рдЬреЛ рдХрд┐, рдкрддреНрддрд┐рдпреЛрдВ рдкрд░ рдЦрдбрд╝рд╛ рд╣реИ), рддреЛ рдХрд┐рд╕реА рднреА рдкрддреНрддреА рдХреЗ рд╢реАрд░реНрд╖ рдХрд╛ рд╕реНрддрд░ 1 рд╣реЛрдЧрд╛ред рдЕрдкрдиреЗ рдХрд╛рдо рдореЗрдВ, Arne рдПрдВрдбрд░рд╕рди рдПрдХ рд╕рд░рд▓ рдирд┐рдпрдо рджреЗрддрд╛ рд╣реИ рдХрд┐ рдПрдХ AA рдкреЗрдбрд╝ рдХреЛ рд╕рдВрддреБрд╖реНрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП:
рдЖрдк рдПрдХ рд╣реА рд╕реНрддрд░ рдХреЗ рдПрдХ рдФрд░ рд╢реАрд░реНрд╖ рдХреЛ рдПрдХ рд╢реАрд░реНрд╖ рдкрд░ рд╕рдВрд▓рдЧреНрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдПрдХ рдФрд░ рдХреЗрд╡рд▓ рджрд╛рдИрдВ рдУрд░ ред
(рдЕрдкрдиреЗ рд▓реЗрдЦ рдореЗрдВ, рдПрдП-рдЯреНрд░реА рдХреЗ рд▓реЗрдЦрдХ 2-3 рдкреЗрдбрд╝реЛрдВ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдереЛрдбрд╝реА рдЕрд▓рдЧ рд╢рдмреНрджрд╛рд╡рд▓реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╕рд╛рд░ рдирд╣реАрдВ рдмрджрд▓рддрд╛ рд╣реИ)ред
рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╢рд┐рдЦрд░ рд╕реНрддрд░ рдХреА рд╢реБрд░реВ рдХреА рдЧрдИ рдЕрд╡рдзрд╛рд░рдгрд╛ рд╣рдореЗрд╢рд╛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╢рд┐рдЦрд░ рдКрдВрдЪрд╛рдИ (рдЬрдореАрди рд╕реЗ рджреВрд░реА) рдХреЗ рд╕рд╛рде рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рддреА рд╣реИ, рд▓реЗрдХрд┐рди рдирд┐рдпрдо "рдПрдХ рд╕реНрддрд░ рдкрд░ рдПрдХ рд╕рд╣реА рдХрдиреЗрдХреНрд╢рди" рдХрд╛ рдкрд╛рд▓рди рдХрд░рддреЗ рд╕рдордп рдкреЗрдбрд╝ рд╕рдВрддреБрд▓рди рдмрдирд╛рдП рд░рдЦрддрд╛ рд╣реИред
рдПрдП рдкреЗрдбрд╝ рдХреЛ рд╕рдВрддреБрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдХреЗрд╡рд▓ 2 ( рджреЛ ) рд╕рдВрдЪрд╛рд▓рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдЙрдиреНрд╣реЗрдВ рдирд┐рдпрдо "рдПрдХ рд╕рд╣реА рдПрдХрд▓-рд╕реНрддрд░реАрдп рдХрдиреЗрдХреНрд╢рди" рд╕реЗ рд╕рдордЭрдирд╛ рдЖрд╕рд╛рди рд╣реИ: рдпрд╣ рдПрдХ рд╣реА рд╕реНрддрд░ рдкрд░ рдмрд╛рдПрдВ рдХрдиреЗрдХреНрд╢рди рдХрд╛ рдЙрдиреНрдореВрд▓рди рдФрд░ рдПрдХ рд╣реА рд╕реНрддрд░ рдкрд░ рджреЛ рд╕рд╣реА рдХрдиреЗрдХреНрд╢рди рдХрд╛ рдЙрдиреНрдореВрд▓рди рд╣реИред
рдЗрди рдкрд░рд┐рдЪрд╛рд▓рдиреЛрдВ рдХреЛ рдХреНрд░рдорд╢рдГ рддрд┐рд░рдЫрд╛ рдФрд░ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдиреЗ рдХреЗ рдореВрд▓ рдХрд╛рд░реНрдп рдореЗрдВ рдирд╛рдорд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЙрдкрд░реЛрдХреНрдд рдЖрдВрдХрдбрд╝реЛрдВ рдореЗрдВ, рдХреНрд╖реИрддрд┐рдЬ рддреАрд░ рдПрдХ рд╕реНрддрд░ рдХреЗ рдХреЛрдиреЗ рдХреЗ рдмреАрдЪ рд╕рдВрдмрдВрдз рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ, рдФрд░ рдЭреБрдХрд╛рд╡ (рдКрд░реНрдзреНрд╡рд╛рдзрд░) - рд╡рд┐рднрд┐рдиреНрди рд╕реНрддрд░реЛрдВ рдХреЗ рдХреЛрдиреЗ рдХреЗ рдмреАрдЪред
рддрд┐рд░рдЫрд╛, рдПрдХ рд╣реА рд╕реНрддрд░ рдкрд░ рдмрд╛рдПрдВ рд▓рд┐рдВрдХ рдХрд╛ рдЙрдиреНрдореВрд▓рди
рд╡рд┐рднрд╛рдЬрд┐рдд, рдПрдХ рд╣реА рд╕реНрддрд░ рдкрд░ рджреЛ рд╕рд╣реА рд╕рдВрдмрдВрдзреЛрдВ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рдирд╛
рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдПрдП рдкреЗрдбрд╝ рдореЗрдВ рдбрд╛рд▓рдиреЗ рдФрд░ рд╣рдЯрд╛рдиреЗ рдЬреИрд╕рд╛ рдХреНрдпрд╛ рджрд┐рдЦрддрд╛ рд╣реИред рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдиреАрдЪреЗ рдХреЗ рддрд▓ (" рдЬрдореАрди ") рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рдХреЛ рдкреЗрд╢ рдХрд░рддреЗ рд╣реИрдВред рдЙрд╕рдХрд╛ рд╕реНрддрд░ рд╣рдореЗрд╢рд╛ 0 рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдПрдВ рдФрд░ рджрд╛рдПрдВ рдХрдиреЗрдХреНрд╢рди рдЙрд╕рдХреЗ рд▓рд┐рдП рдЗрд╢рд╛рд░рд╛ рдХрд░рддреЗ рд╣реИрдВред рд╕рднреА рдкрддреНрддреА рдХреЛрдиреЗ рд▓рд┐рдВрдХ рдореЗрдВ 0 рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдиреАрдЪреЗ рдХреА рдУрд░ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддреЗ рд╣реИрдВред
рд╣реИрдмреЗ рдкрд░ рдбреЗрд▓реНрдлреА рдХреЗ рд╣рдлреНрддреЛрдВ рдХреЗ рднреАрддрд░, рд╕реНрд░реЛрдд рдХреЛрдб рдбреЗрд▓реНрдлреА рдХреЗ рд╕рдорд╛рди рдЫрджреНрдордХреЛрдб рдХреЗ рд░реВрдк рдореЗрдВ рд╣реЛрдЧрд╛ (
рдПрдП-рдЯреНрд░реА рдХреЗ рд╢реАрд░реНрд╖ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВред
PNode = ^ TNode ;
TNode = рдкреИрдХ рд░рд┐рдХреЙрд░реНрдб
рдмрд╛рдПрдВ , рджрд╛рдПрдВ : PNode ;
рд╕реНрддрд░ : рдкреВрд░реНрдгрд╛рдВрдХ ; // рд╕реНрдХреЗрд▓; рдкрддреНрддрд┐рдпреЛрдВ рдкрд░ 1
рдХреБрдВрдЬреА : рд╕реВрдЪрдХ ; // рдХреБрдВрдЬреА, рдбреЗрдЯрд╛ рд╢реАрд░реНрд╖ рдХреЗ рд╕рд╛рде рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИ
рдЕрдВрдд ;
рдирдП рддрддреНрд╡ рдХреЛ рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░рдирд╛ рд╕рдмрд╕реЗ рдЖрд╕рд╛рдиреА рд╕реЗ рдПрдХ рдкреБрдирд░рд╛рд╡рд░реНрддреА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рджрд┐рдЦрддрд╛ рд╣реИред
рдкреНрд░рдХреНрд░рд┐рдпрд╛ NodeInsert ( var P : PNode ; newkey : рд╕реВрдЪрдХ ) ;
рд╢реБрд░реВ рдХрд░рдирд╛
рдпрджрд┐ рдкреА = рдиреАрдЪреЗ рддреЛ рд╢реБрд░реВ / рд╢реБрд░реВ рдиреАрдЪреЗ рддрдХ рдкрд╣реБрдВрдЪ рдЧрдпрд╛ - рдПрдХ рдирдпрд╛ рд╢реАрд░реНрд╖ рдмрдирд╛рдПрдВ
рдирдпрд╛ ( рдкреА ) ;
рдкреА ^ ред рдмрд╛рдПрдБ : = рдиреАрдЪреЗ ;
рдкреА ^ ред рд╕рд╣реА : = рдиреАрдЪреЗ ;
рдкреА ^ ред рд╕реНрддрд░ : = 1 ;
рдкреА ^ ред рдХреБрдВрдЬреА : = newkey ;
рдЕрдВрдд рдФрд░ рд╢реБрд░реВ
рдЕрдЧрд░ newkey <p ^ ред рдлрд┐рд░ рдЪрд╛рдмреА
NodeInsert ( рдкреА ^ ред рд▓реЗрдлреНрдЯ , рдиреНрдпреВрдХреА )
рдФрд░ рдЕрдЧрд░ newkey> P ^ ред рдлрд┐рд░ рдЪрд╛рдмреА
NodeInsert ( P ^ ред рд╕рд╣реА , newkey )
рдФрд░ рд╢реБрд░реВ рдХрд░реЗрдВ
рдкреА ^ ред рдХреБрдВрдЬреА : = newkey ;
рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рдХреЗ;
рдЕрдВрдд ;
рддрд┐рд░рдЫрд╛ ( рдкреА ) ;
рд╕реНрдкреНрд▓рд┐рдЯ ( рдкреА ) ;
рдЕрдВрдд ;
рдЕрдВрдд ;
рдкреЗрдбрд╝ рдореЗрдВ newkey рдХреБрдВрдЬреА рдбрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП, NodeInsert (рд░реВрдЯ, newkey) рдХреЛ рдХреЙрд▓ рдХрд░реЗрдВред рд╣рдо рдкреЗрдбрд╝реЛрдВ рдХреА рдЬрдбрд╝ рд╕реЗ рдиреАрдЪреЗ рдЬрд╛рддреЗ рд╣реИрдВ, рдЪрд╛рдмреА рдХреА рддреБрд▓рдирд╛ рдХрд░рддреЗ рд╣реИрдВ; рдкреЗрд╕реНрдЯ; рдКрдкрд░ рдЬрд╛рдПрдВ рдФрд░ рд╕рдВрддреБрд▓рди рдмрдирд╛рдПрдВ: рдкреНрд░рддреНрдпреЗрдХ рд╢реАрд░реНрд╖ рдХреЗ рд▓рд┐рдП рддрд┐рд░рдЫрд╛ рдФрд░ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░реЗрдВред
рдирд┐рдХрд╛рд▓рдирд╛ рдереЛрдбрд╝рд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИред
рдкреНрд░рдХреНрд░рд┐рдпрд╛ NodeDelete ( var P : PNode ; newkey : рд╕реВрдЪрдХ ) ;
рд╢реБрд░реВ рдХрд░рдирд╛
рдпрджрд┐ P <> рдиреАрдЪреЗ рд╣реИ рддреЛ рд╢реБрд░реВ рдХрд░реЗрдВ
// 1. рдиреАрдЪреЗ рдЬрд╛рдПрдВ рдФрд░ рдЖрдЦрд┐рд░реА рдФрд░ рдбрд┐рд▓реАрдЯ рдХреЛ рдпрд╛рдж рд░рдЦреЗрдВ
рдЕрдВрддрд┐рдо : = рдкреА ;
рдЕрдЧрд░ рддреБрд▓рдирд╛ рдХрд░реЗрдВ ( newkey , P ) < 0 рддреЛ // newkey <key
NodeDelete ( рдкреА ^ ред рд▓реЗрдлреНрдЯ , рдиреНрдпреВрдХреА )
рдФрд░ рд╢реБрд░реВ рдХрд░реЗрдВ
рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ : = рдкреА ;
рдиреЛрдбрдбреЗрд▓реЗрдЯ ( рдкреА ^ ред рд░рд╛рдЗрдЯ , рдиреНрдпреВрдХреА ) ;
рдЕрдВрдд ;
// 2. рдЕрдЧрд░ рдкрд╛рдпрд╛ рдЧрдпрд╛ рддрддреНрд╡ рдХреЛ рд╣рдЯрд╛ рджреЗрдВ
рдпрджрд┐ ( P = рдЕрдВрддрд┐рдо ) рдФрд░ ( рд╣рдЯрд╛рдП рдЧрдП <> рддрд▓ ) рдФрд░ ( newkey == рд╣рдЯрд╛рдП рдЧрдП рдХреБрдВрдЬреА ред ) рддреЛ рд╢реБрд░реВ рдХрд░реЗрдВ
рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ ред рдХреБрдВрдЬреА : = рдкреА ^ ред рдХреБрдВрдЬреА ;
рд╣рдЯрд╛ рджрд┐рдпрд╛ : = рдиреАрдЪреЗ ;
P : = P ^ ред рд╕рд╣реА ;
рдЕрдВрддрд┐рдо рд╣рдЯрд╛рдПрдВ ;
рдЕрдВрдд рдореЗрдВ рдЕрдЧрд░ ( P ^ ред рдмрд╛рдПрдБ ред рд╕реНрддрд░ <P ^ ред рд╕реНрддрд░ - 1 ) рдпрд╛ ( P ^ ред рджрд╛рдпрд╛рдБ ред рд╕реНрддрд░ <P ^ ред рд╕реНрддрд░ - 1 ) рдлрд┐рд░ рд╢реБрд░реВ рдХрд░реЗрдВред
// 3. рдКрдкрд░ рдЬрд╛рддреЗ рд╕рдордп рд╕рдВрддреБрд▓рди рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдХрд░реЗрдВ
рджрд┐рд╕рдВрдмрд░ ( рдкреА ^ рд╕реНрддрд░ ) ;
рдпрджрд┐ рдкреА ^ ред рд╕рд╣реА рд╣реИ ред рд╕реНрддрд░ > рдкреА ^ ред рд╕реНрддрд░ рддрдм рдкреА ^ ред рд╕рд╣реА рд╣реИ ред рд╕реНрддрд░ : = рдкреА ^ ред рд╕реНрддрд░ ;
рддрд┐рд░рдЫрд╛ ( рдкреА ) ;
рддрд┐рд░рдЫрд╛ ( рдкреА ^ рдЕрдзрд┐рдХрд╛рд░ ) ;
рддрд┐рд░рдЫрд╛ ( рдкреА ^ ред рд░рд╛рдЗрдЯ ^ рд░рд╛рдЗрдЯ ) ;
рд╕реНрдкреНрд▓рд┐рдЯ ( рдкреА ) ;
рд╕реНрдкреНрд▓рд┐рдЯ ( рдкреА ^ ред рд░рд╛рдЗрдЯ ) ;
рдЕрдВрдд ;
рдЕрдВрдд ;
рдЕрдВрдд ;
рджреЛ рд╕рд╣рд╛рдпрдХ рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рд╣рдЯрд╛рдП рдЧрдП рдФрд░ рдЕрдВрддрд┐рдоред рдЬрдм рдкреЗрдбрд╝ рдХреЗ рдиреАрдЪреЗ рдЙрддрд░рддреЗ рд╣реИрдВ (рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдХреЗ рджреМрд░рд╛рди), рд╣рдЯрд╛рдП рдЧрдП рдХреБрдВрдЬреА рдХреЗ рд╕рд╛рде рд╡рд░реНрдЯреЗрдХреНрд╕ рдХреБрдВрдЬреА рдХреА рддреБрд▓рдирд╛ рдХреА рдЬрд╛рддреА рд╣реИред рдпрджрд┐ рд╢реАрд░реНрд╖ рдХреБрдВрдЬреА рдХреЛ рд╣рдЯрд╛рдП рдЧрдП рд╕реЗ рдХрдо рд╣реИ, рддреЛ рдмрд╛рдПрдВ рд▓рд┐рдВрдХ рдкрд░ рдЬрд╛рдПрдВ, рдЕрдиреНрдпрдерд╛ - рджрд╛рдИрдВ рдУрд░ (рдпрд╛рдиреА, рдХреБрдВрдЬреА рдорд┐рд▓рд╛рди рд╣реЛрдиреЗ рдкрд░ рднреА рджрд╛рдИрдВ рдУрд░ рдЬрд╛рдПрдВ)ред рдЕрдВрдд рдореЗрдВ, рдкреНрд░рддреНрдпреЗрдХ рдЯреНрд░реИрд╡рд░реНрд╕ рдХрд┐рдП рдЧрдП рд╢реАрд░реНрд╖ рдХреЛ рджрд░реНрдЬ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рд╣рдЯрд╛рдП рдЬрд╛рдиреЗ рдореЗрдВ - рдХреЗрд╡рд▓ рдПрдХ рд╣реА рдЬрд╣рд╛рдВ "рд╕рд╣реА рдирд┐рдХрд▓рд╛ред"
рдЬрдм рдкреЗрдбрд╝ рдХреЗ рдиреАрдЪреЗ рдкрд╣реБрдВрдЪ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╣рдЯрд╛рдП рдЧрдП рдмрд┐рдВрджреБ рдХреЛ рдЙрд╕ рд╢реАрд░реНрд╖ рдмрд┐рдВрджреБ рдкрд░ рдкрд╣реБрдВрдЪрд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рд╣рдЯрд╛рдП рдЬрд╛рдиреЗ рдХреА рдХреБрдВрдЬреА рд╕реНрдерд┐рдд рд╣реЛрддреА рд╣реИ (рдпрджрд┐ рд╡рд╣ рдкреЗрдбрд╝ рдореЗрдВ рд╣реИ), рдФрд░ рдЕрдВрддрд┐рдо рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╣рдЯрд╛рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓рд╛ рд╢реАрд░реНрд╖ (рдпрд╣ рд╡рд╣реА рд╢реАрд░реНрд╖ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ)ред рдХреБрдВрдЬреА рдХреЛ рдкрд┐рдЫрд▓реА рд╕реЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЕрдВрддрд┐рдо рд╢реАрд░реНрд╖ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдЕрдЧрд▓рд╛, рд╕рдВрддреБрд▓рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рдЖрдкрдХреЛ 3 рддрд┐рд░рдЫрд╛ рдФрд░ 2 рд╡рд┐рднрд╛рдЬрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рддрд┐рд░рдЫрд╛ рдФрд░ рд╡рд┐рднрд╛рдЬрди рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЖрдо рдмрд╛рдд рд╣реИред
// рд░рд┐рдХреЙрд░реНрдб рдХреЗ _content_ рдХреЛ рд╕реНрд╡реИрдк рдХрд░реЗрдВ (рдкреЙрдЗрдВрдЯрд░реНрд╕ рдирд╣реАрдВ)
рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕реНрд╡реИрдк ( P1 , P2 : PNode ) ;
рд╡рд░
tmp : TNode ;
рд╢реБрд░реВ рдХрд░рдирд╛
tmp : = P1 ^ ;
рдкреА 1 ^ : = рдкреА 2 ^ ;
P2 ^ : = tmp ;
рдЕрдВрдд ;
рдкреНрд░рдХреНрд░рд┐рдпрд╛ рддрд┐рд░рдЫрд╛ ( рдЯреА : PNode ) ;
рд╡рд░
рдПрд▓ : рдкреАрдпреЛрдб ;
рд╢реБрд░реВ рдХрд░рдирд╛
рдПрд▓ : = рдЯреА ^ ред рдЫреЛрдбрд╝ рджрд┐рдпрд╛ ;
рдпрджрд┐ рдЯреА ^ ред рд╕реНрддрд░ = рдПрд▓ ^ ред рд╕реНрддрд░ рддрдм рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ
рд╕реНрд╡реИрдк ( рдЯреА , рдПрд▓ ) ; // рдЕрдм рдЯреА ==> рдПрд▓, рдПрд▓ ==> рдЯреА
рдПрд▓ ^ ред рдмрд╛рдпрд╛рдВ : = рдЯреА ^ ред рд╕рд╣реА ; // рдЕрд░реНрдерд╛рдд T.left = L.right
рдЯреА ^ ред рд╕рд╣реА : = рдПрд▓ ; // рдЕрд░реНрдерд╛рдд L.right = T
рдЕрдВрдд ;
рдЕрдВрдд ;
рдкреНрд░рдХреНрд░рд┐рдпрд╛ рднрд╛рдЬрд┐рдд ( рдЯреА : PNode ) ;
рд╡рд░
рдЖрд░ : рдкреАрдиреЛрдб ;
рд╢реБрд░реВ рдХрд░рдирд╛
рдЖрд░ : = рдЯреА ^ ред рд╕рд╣реА ;
рдпрджрд┐ рдЯреА ^ ред рд╕реНрддрд░ = рдЖрд░ ^ ред рд╕рд╣реА ^ рд╕реНрддрд░ рддрдм рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ
рд╕реНрд╡реИрдк ( рдЯреА , рдЖрд░ ) ; // рдЕрдм рдЯреА ==> рдЖрд░, рдЖрд░ ==> рдЯреА
рдЖрд░ ^ ред рд╕рд╣реА : = рдЯреА ^ ред рдЫреЛрдбрд╝ рджрд┐рдпрд╛ ;
рдЯреА ^ ред рдмрд╛рдпрд╛рдВ : = рдЖрд░ ;
рдЗрдВрдХ ( рдЯреА ^ рд╕реНрддрд░ ) ;
рдЕрдВрдд ;
рдЕрдВрдд ;
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рджрд┐рдП рдЧрдП рдЫрджреНрдо рдХреЛрдб рдПрдХ рдПрдП-рдЯреНрд░реА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди (рдХреЗрд╡рд▓ "рдЫреЛрдЯреА рдЪреАрдЬреЗрдВ рдЬреЛрдбрд╝реЗрдВ" рдЬреИрд╕реЗ рдПрдХ рдкреЗрдбрд╝ рдХреА рдЬрдбрд╝ (рдЬрдбрд╝), рдЖрджрд┐ рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ)ред
рдХреБрдЫ рдЙрдкрдпреЛрдЧреА рд▓рд┐рдВрдХ
рд╕реА рдореЗрдВ рдПрдП рдкреЗрдбрд╝ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди ред
рдПрдХ рдЕрджреНрднреБрдд рдРрдкрд▓реЗрдЯ рдЬрд┐рд╕рдореЗрдВ рдЖрдк рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреЗ рдкреЗрдбрд╝реЛрдВ (рдПрдП рдкреЗрдбрд╝реЛрдВ рд╕рд╣рд┐рдд) рдХреЗ рд╕рд╛рде рдЦреЗрд▓ рд╕рдХрддреЗ рд╣реИрдВред
рдПрдП рдкреЗрдбрд╝ рджреГрд╢реНрдп рдФрд░ рд╕реНрд░реЛрдд рдХреЛрдб рдХреЗ рд╕рд╛рде рдбреЗрд▓реНрдлреА рдкрд░рд┐рдпреЛрдЬрдирд╛ ред
рд╡рд┐рдХрд┐рдкреАрдбрд┐рдпрд╛ рд▓реЗрдЦ ред