рдмрд╛рдЗрдирд░реА рдЯреНрд░реА рдЯреНрд░реИрд╡рд░реНрд╕рд▓: рдорд╛рддрд╛-рдкрд┐рддрд╛ рдХреЛ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐, рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдФрд░ рд╕реВрдЪрдХ

рдмрд╛рдЗрдирд░реА рдкреЗрдбрд╝реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореВрд▓ рдмрд╛рддреЗрдВ рдпрд╣рд╛рдВ рдкреНрд░рд╕реНрддреБрдд рдХреА рдЧрдИ рд╣реИрдВ ред рдореИрдВ рдЕрдкрдиреЗ "5 kopecks" рдЬреЛрдбрд╝реВрдВрдЧрд╛ рдФрд░ рдЗрд╕ рдкреЛрд╕реНрдЯ рдореЗрдВ рдореИрдВ рджреНрд╡рд┐рдЖрдзрд╛рд░реА рдкреЗрдбрд╝реЛрдВ рдХреА рдХрдЯрд╛рдИ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╕рд╛рдордЧреНрд░рд┐рдпреЛрдВ рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░реВрдБрдЧрд╛, рдЕрд░реНрдерд╛рддреН рдкреБрдирд░рд╛рд╡рд░реНрддрди рдФрд░ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХреНрд╖рдорддрд╛рдУрдВ рдХреА рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдореВрд▓ рдиреЛрдб рдХреЗ рд▓рд┐рдП рдкреЙрдЗрдВрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛рдУрдВ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░рдирд╛ред

рддреЛ ... рдЬрд╛рд╡рд╛ рднрд╛рд╖рд╛, рдиреЛрдб рд╡рд░реНрдЧ рдореЗрдВ рдирд┐рдореНрди рд░реВрдк рд╣реИ:
public class Node { Node left; Node right; Node parent; String value; public Node(Node p, String v){ parent=p; value=v; } тАж } 

рдиреЛрдЯ : рдореВрд▓ рдорд╛рддрд╛-рдкрд┐рддрд╛ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рдирд╛ - рдПрдХ рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ, рдЗрд╕рд╕реЗ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЬреИрд╕рд╛ рдХрд┐ рд╢реАрд░реНрд╖рдХ рджрд┐рдЦрд╛рдПрдЧрд╛, рдпрд╣ рдХрдИ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рдкреЗрдбрд╝ рдмрд╛рдпрдкрд╛рд╕ - рдкреЗрдбрд╝ рдХреЗ рд╕рднреА рдиреЛрдбреНрд╕ рдХреЗ рдЕрдиреБрдХреНрд░рдорд┐рдХ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг (рджреЗрдЦрдиреЗ, рдмрджрд▓рдиреЗ, рдЖрджрд┐), рдЬрд┐рд╕рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдиреЛрдб рдХреЛ рдПрдХ рдмрд╛рд░ рд╕рдЦреНрддреА рд╕реЗ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдкреЗрдбрд╝ рдХреЗ рдиреЛрдбреНрд╕ рдХреА рдПрдХ рд░реИрдЦрд┐рдХ рд╡реНрдпрд╡рд╕реНрдерд╛ рд╣реЛрддреА рд╣реИред

рдкреНрд░рдХреНрд╖реЗрдкрд╡рдХреНрд░ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рджреЛ рдкреНрд░рдХрд╛рд░ рдХреЗ рдмрд╛рдИрдкрд╛рд╕ рдкреНрд░рддрд┐рд╖реНрдард┐рдд рд╣реИрдВ:
- рдХреНрд╖реИрддрд┐рдЬ (рдЪреМрдбрд╝рд╛); рдФрд░
- рдКрд░реНрдзреНрд╡рд╛рдзрд░ (рдЧрд╣рд░рд╛рдИ рдореЗрдВ)ред

рдХреНрд╖реИрддрд┐рдЬ рдЯреНрд░реИрд╡рд░реНрд╕рд▓ рдХрд╛ рддрд╛рддреНрдкрд░реНрдп рд╣реИ рдкреЗрдбрд╝ рдХреЛ рд╕реНрддрд░реЛрдВ (рд╕реНрддрд░-рдХреНрд░рдо) рджреНрд╡рд╛рд░рд╛ рдЯреНрд░реЗрд╕ рдХрд░рдирд╛ - рд╡рд░реНрддрдорд╛рди рд╕реНрддрд░ рдХреЗ рдкрд╣рд▓реЗ рд╕рднреА рдиреЛрдбреНрд╕ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рдирд┐рдЪрд▓реЗ рд╕реНрддрд░ рдкрд░ рд╕рдВрдХреНрд░рдордг рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рд╕реНрддрд░

рдПрдХ рдКрд░реНрдзреНрд╡рд╛рдзрд░ рдЯреНрд░реИрд╡рд░реНрд╕рд▓ рдХреЗ рд╕рд╛рде, рд╡рд░реНрддрдорд╛рди рдиреЛрдб рдХреЗ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреНрд░рдо рдФрд░ рдЗрд╕рдХреЗ рджрд╛рдПрдВ рдФрд░ рдмрд╛рдПрдВ рдЙрдкрдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рдиреЛрдбреНрд╕ рднрд┐рдиреНрди рд╣реЛрддреЗ рд╣реИрдВ, рдФрд░ рдЗрд╕ рдорд╛рдирджрдВрдб рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдКрд░реНрдзреНрд╡рд╛рдзрд░ рдЯреНрд░реИрд╡рд░реНрд╕рд▓ рдХреЗ рд▓рд┐рдП рддреАрди рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ:
- рдкреНрд░рддреНрдпрдХреНрд╖ (рдЙрдкрд╕рд░реНрдЧ, рдкреВрд░реНрд╡-рдЖрджреЗрд╢рд┐рдд): рд╡рд░реНрдЯреЗрдХреНрд╕ - рдмрд╛рдпрд╛рдБ рд╕рдмрдЯреНрд░реА - рд░рд╛рдЗрдЯ рд╕рдмрдЯреНрд░реА;
- рд░рд┐рд╡рд░реНрд╕ (рдЗрдиреНрдлрд┐рдХреНрд╕, рдЗрди-рдСрд░реНрдбрд░): рдмрд╛рдПрдВ рд╕рдмрдЯреНрд░реА - рд╡рд░реНрдЯреЗрдХреНрд╕ - рд░рд╛рдЗрдЯ рд╕рдмрдЯреНрд░реА; рдФрд░
- рдЕрдВрдд (рдкреЛрд╕реНрдЯрдлрд┐рдХреНрд╕, рдкреЛрд╕реНрдЯ-рдСрд░реНрдбрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛): рдмрд╛рдПрдВ рд╕рдмрдЯреНрд░реА - рд░рд╛рдЗрдЯ рд╕рдмрдЯреНрд░реА - рд╡рд░реНрдЯреЗрдХреНрд╕ред
рдЫрд╡рд┐ рд╣реЛрд╕реНрдЯрд┐рдВрдЧ
рд╕рднреА рдорд╛рдорд▓реЛрдВ рдореЗрдВ рд╕реНрд╡рдпрдВ рдмрд╛рдИрдкрд╛рд╕ рдореВрд▓ рд░реВрдк рд╕реЗ рд╕рдорд╛рди рд╣реИ, рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреНрд░рдо рдЕрд▓рдЧ рд╣реИред рдпрд╣ рджрд░реНрд╢рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдЯреНрд░реА рдиреЛрдбреНрд╕ рдХрд╛ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХрд┐рд╕ рдХреНрд░рдо рдореЗрдВ рд╣реЛрдЧрд╛, "рдЯреНрд░реИрд╡рд░реНрд╕рд▓ рдкрд╛рде" рдХрд╛ рдкрд╛рд▓рди рдХрд░рдирд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред рдПрдХ рдкреНрд░рддреНрдпрдХреНрд╖ рдмрд╛рдпрдкрд╛рд╕ рдХреЗ рд╕рд╛рде, рдиреЛрдб рдиреЛрдб рдХреЗ рдиреАрдЪреЗ рд╕реЗ рдФрд░ рдЕрдВрдд рдореЗрдВ, рдиреЛрдб рдХреЗ рджрд╛рдИрдВ рдУрд░ рдХреЗ рд╕рд╛рде, рдиреЛрдб рдХреЗ рдмрд╛рдИрдВ рдУрд░ рдПрдХ рдмрд┐рдВрджреБ рдкрд░ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, "рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдиреЛрдб рдореЗрдВ" рд╣реЛрдиреЗ рдХреЗ рдирд╛рддреЗ, рд╣рдореЗрдВ рдпрд╣ рдЬрд╛рдирдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдХреНрдпрд╛ рдЗрд╕реЗ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдФрд░ рдХрд╣рд╛рдВ рдЪрд▓рдирд╛ рд╣реИред

рдкреНрд░рддреНрдпрд╛рд╡рд░реНрддрди


рд╡рд░реНрдЯрд┐рдХрд▓ рдЯреНрд░реИрд╡рд░реНрд╕рд▓ рдХреЗ рд╕рднреА рддреАрди рд╡реЗрд░рд┐рдПрдВрдЯ рдХреЛ рдкреБрдирд░рд╛рд╡рд░реНрддреА рдХрд╛рд░реНрдпреЛрдВ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╛рдердорд┐рдХ рд░реВрдк рд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

  void recPreOrder(){ treatment(); if (left!=null) left.recPreOrder(); if (right!=null) right.recPreOrder(); } void recInOrder(){ if (left!=null) left.recInOrder(); treatment(); if (right!=null) right.recInOrder(); } void recPostOrder(){ if (left!=null) left.recPostOrder(); if (right!=null) right.recPostOrder(); treatment(); } 


рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рди рдХреЗрд╡рд▓ рд░реЗрдВрдЧрддреЗ рд╕рдордп, рдмрд▓реНрдХрд┐ рдПрдХ рдкреЗрдбрд╝ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ рд╕рдордп, рдПрдХ рдкреЗрдбрд╝ рдореЗрдВ рдЦреЛрдЬ рдХрд░рддреЗ рд╣реБрдП, рдФрд░ рд╕рдВрддреБрд▓рди рдореЗрдВ рднреА рдмреЗрд╣рдж рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдкреБрдирд░рд╛рд╡рд░реНрддрди рдХреНрд╖реИрддрд┐рдЬ рдЯреНрд░реА рдЯреНрд░реИрд╡рд░реНрд╕рд▓ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╕рд╛рде рд╣реА рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рд╕реНрдЯреИрдХ рдХреЛ рдУрд╡рд░рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд┐рдВрддрд╛рдУрдВ рдХреЗ рд╕рд╛рде, рдПрдХ рдкреБрдирд░рд╛рд╡реГрддреНрдд рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдХрдВрдЯреЗрдирд░


рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╡рд┐рдЬрд╝рд┐рдЯ рдХрд┐рдП рдЧрдП рд▓реЗрдХрд┐рди рд╕рдВрд╕рд╛рдзрд┐рдд рдиреЛрдбреНрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рд╕реНрдЯреИрдХ рдХрдВрдЯреЗрдирд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ (рдКрд░реНрдзреНрд╡рд╛рдзрд░ рдЯреНрд░реИрд╡рд░реНрд╕рд▓ рдХреЗ рд▓рд┐рдП) рдФрд░ рдХрддрд╛рд░ (рдХреНрд╖реИрддрд┐рдЬ рдЯреНрд░реИрд╡рд░реНрд╕рд▓ рдХреЗ рд▓рд┐рдП) рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдХреНрд╖реИрддрд┐рдЬ рдмрд╛рдИрдкрд╛рд╕:
рд╣рдо рдХрддрд╛рд░ рдореЗрдВ рдкрд╣рд▓реЗ рдиреЛрдб рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдЕрдЧрд░ рдмрдЪреНрдЪреЗ рдХреЗ рдиреЛрдб рд╣реЛрддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдЙрдиреНрд╣реЗрдВ рдХрддрд╛рд░ рдХреЗ рдЕрдВрдд рдореЗрдВ рдбрд╛рд▓рддреЗ рд╣реИрдВред рд╣рдо рдЕрдЧрд▓реЗ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдореЗрдВ рдкрд╛рд╕ рд╣реЛрддреЗ рд╣реИрдВред
  static void contLevelOrder(Node top){ Queue<Node> queue=new LinkedList<> (); do{ top.treatment(); if (top.left!=null) queue.add(top.left); if (top.right!=null) queue.add(top.right); if (!queue.isEmpty()) top=queue.poll(); }while (!queue.isEmpty()); } 


рдКрд░реНрдзреНрд╡рд╛рдзрд░ рдкреНрд░рддреНрдпрдХреНрд╖ рдмрд╛рдИрдкрд╛рд╕:
рд╣рдо рд╡рд░реНрддрдорд╛рди рдиреЛрдб рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдЕрдЧрд░ рдХреЛрдИ рд╕рд╣реА рд╕рдмрдЯреНрд░реА рд╣реИ, рддреЛ рдЗрд╕реЗ рдЖрдЧреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рд╕реНрдЯреИрдХ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВред рд╣рдо рдмрд╛рдИрдВ рд╕рдмрдЯреНрд░реА рдХреЗ рдиреЛрдб рдХреЛ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВред рдпрджрд┐ рдХреЛрдИ рд╢реЗрд╖ рдиреЛрдб рдирд╣реАрдВ рд╣реИ, рддреЛ рд╕реНрдЯреИрдХ рд╕реЗ рд╢реАрд░реНрд╖ рдиреЛрдб рдкрд░ рдЬрд╛рдПрдВред
  static void contPreOrder(Node top){ Stack<Node> stack = new Stack<> (); while (top!=null || !stack.empty()){ if (!stack.empty()){ top=stack.pop(); } while (top!=null){ top.treatment(); if (top.right!=null) stack.push(top.right); top=top.left; } } } 


рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ рдмреИрдХрдЯреНрд░реЗрд╕:
рд╡рд░реНрддрдорд╛рди рдиреЛрдб рд╕реЗ рд╣рдо рд╕рдмрд╕реЗ рдирд┐рдЪрд▓реЗ рдмрд╛рдПрдВ рдиреЛрдб рдореЗрдВ "рдиреАрдЪреЗ" рдЬрд╛рддреЗ рд╣реИрдВ, рд╕реНрдЯреИрдХ рдХреЛ рдЬреЛрдбрд╝рдХрд░ рд╕рднреА рд╡рд┐рдЬрд╝рд┐рдЯ рдХрд┐рдП рдЧрдП рдиреЛрдбреНрд╕ред рд╣рдо рд╕реНрдЯреИрдХ рд╕реЗ рд╢реАрд░реНрд╖ рдиреЛрдб рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдпрджрд┐ рд╡рд░реНрддрдорд╛рди рдиреЛрдб рдореЗрдВ рдПрдХ рд╕рд╣реА рд╕рдмрдЯреНрд░реА рд╣реИ, рддреЛ рдЕрдЧрд▓реЗ рдиреЛрдб рдХреЛ рд░рд╛рдЗрдЯ рдиреЛрдб рд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВред рдпрджрд┐ рдХреЛрдИ рд╕рд╣реА рдиреЛрдб рдирд╣реАрдВ рд╣реИ, рддреЛ рд╣рдо рдбрд┐рд╕реЗрдВрдЯ рд╕реНрдЯреЗрдк рдХреЛ рдЫреЛрдбрд╝ рджреЗрддреЗ рд╣реИрдВ рдФрд░ рд╕реНрдЯреИрдХ рд╕реЗ рдЕрдЧрд▓реЗ рдиреЛрдб рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реИрдВред
  static void contInOrder(Node top){ Stack<Node> stack = new Stack<> (); while (top!=null || !stack.empty()){ if (!stack.empty()){ top=stack.pop(); top.treatment(); if (top.right!=null) top=top.right; else top=null; } while (top!=null){ stack.push(top); top=top.left; } } } 


рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ рдЕрдВрдд рдмрд╛рдпрдкрд╛рд╕:
рдпрд╣рд╛рдВ рд╕реНрдерд┐рддрд┐ рдЬрдЯрд┐рд▓ рд╣реИ - рд░рд╛рдЙрдВрдб рдЯреНрд░рд┐рдк рдХреЗ рд╡рд┐рдкрд░реАрдд, рд╡рдВрд╢ рдХреНрд░рдо рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЖрдкрдХреЛ рдпрд╣ рдЬрд╛рдирдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдХреНрдпрд╛ рд╕рд╣реА рд╕рдмрдЯреНрд░реА рдкрд╣рд▓реЗ рд╣реА рд╕рдВрд╕рд╛рдзрд┐рдд рд╣реЛ рдЪреБрдХреА рд╣реИред рдПрдХ рд╕рдорд╛рдзрд╛рди рдиреЛрдб рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдПрдХ рдзреНрд╡рдЬ рд╢рд╛рдорд┐рд▓ рдХрд░рдирд╛ рд╣реИ рдЬреЛ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА (рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ) рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИред рдПрдХ рдЕрдиреНрдп рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реНрдЯреИрдХ рдСрд░реНрдбрд░ рдореЗрдВ рд╕реАрдзреЗ "рдХреЛрдбрд┐рдВрдЧ" рд╣реИ - рд╡рдВрд╢ рдХреЗ рджреМрд░рд╛рди, рдпрджрд┐ рдЕрдЧрд▓реЗ рдиреЛрдб рдХреЛ рдмрд╛рдж рдореЗрдВ рд╕рд╣реА рд╕рдмрдЯреНрд░реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рддреЛ рдЕрдиреБрдХреНрд░рдо "рдкреИрд░реЗрдВрдЯ, рд░рд╛рдЗрдЯ рдиреЛрдб, рдкреИрд░реЗрдВрдЯ" рдХреЛ рд╕реНрдЯреИрдХ рдкрд░ рдзрдХреЗрд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЬрдм рд╕реНрдЯреИрдХ рд╕реЗ рдиреЛрдбреНрд╕ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рд╣рдореЗрдВ рд╕рд╣реА рд╕рдмрдЯреНрд░реА рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
  static void contPostOrder(Node top){ Stack<Node> stack = new Stack<> (); while (top!=null || !stack.empty()){ if (!stack.empty()){ top=stack.pop(); if (!stack.empty() && top.right==stack.lastElement()){ top=stack.pop(); }else{ top.treatment(); top=null; } } while (top!=null){ stack.push(top); if (top.right!=null){ stack.push(top.right); stack.push(top); } top=top.left; } } } 

рдЬрдирдХ рд╕реВрдЪрдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ


рдХрдХреНрд╖рд╛ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдорд╛рддрд╛-рдкрд┐рддрд╛ рдХреЛ рдПрдХ рд╕реВрдЪрдХ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдкреЗрдбрд╝реЛрдВ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдФрд░ рд╕рдВрддреБрд▓рди рдореЗрдВ рдХреБрдЫ рдкрд░реЗрд╢рд╛рдирд┐рдпрд╛рдВ рд▓рд╛рддреА рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдкреЗрдбрд╝ рдХреЗ рдХрд┐рд╕реА рднреА рдиреЛрдб рд╕реЗ рдЙрд╕рдХреЗ рдХрд┐рд╕реА рднреА рдиреЛрдб рддрдХ "рдкрд╣реБрдБрдЪрдиреЗ" рдХреА рдХреНрд╖рдорддрд╛ рдХрд╛рдо рдЖ рд╕рдХрддреА рд╣реИред рдКрдкрд░реА рд╕реНрддрд░ рдкрд░ "рд╡реГрджреНрдзрд┐" рдХреЗ рджреМрд░рд╛рди рдЙрди рд╕рднреА рдкрд░ рдирдЬрд░ рд░рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ - рдЪрд╛рд╣реЗ рд╡рд╣ рджрд╛рдПрдВ рд╡рдВрд╢ рд╕реЗ рдЖрдпрд╛ рд╣реЛ рдпрд╛ рдмрд╛рдПрдВ рд╕реЗред
рдЗрд╕рд▓рд┐рдП, рдкреЗрд░реЗрдВрдЯ рдкреЙрдЗрдВрдЯрд░реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рд╡рд░реНрдЯрд┐рдХрд▓ рдПрдВрдб рдЯреНрд░реИрд╡рд░реНрд╕рд▓ рдХреЗ рд▓рд┐рдП рдХреЛрдб рджрд┐рдЦреЗрдЧрд╛ред
  static void parentPostOrder(Node top){ boolean fromright=false; Node shuttle=top, holder; while(true){ while (fromright){ shuttle.treatment(); if (shuttle==top) return; holder=shuttle; shuttle=shuttle.parent; fromright=shuttle.right==holder; if (!fromright && shuttle.right!=null) shuttle=shuttle.right; else fromright=true; } while (shuttle.left!=null) shuttle=shuttle.left; if (shuttle.right!=null) shuttle=shuttle.right; else fromright=true; } } 

рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдПрдХ рдФрд░ рд╡рд░реНрдЧ рдЬреЛ рдорд╛рддрд╛-рдкрд┐рддрд╛ рд╕реВрдЪрдХ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдкрд╣рд▓реЗ рд╣реА рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдкреЗрдбрд╝ рдХреЗ рдЕрдВрджрд░ рдЪрд▓ рд░рд╣рд╛ рд╣реИред
рддреЛ, рд╡рд░реНрддрдорд╛рди рдиреЛрдб рд╕реЗ n- рд╡реЗрдВ рдиреЛрдб рдкрд░ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, "рдЯреНрд░реА рдореЗрдВ рдУрд░рд┐рдПрдВрдЯреЗрд╢рди" рдХреЗ рдмрд┐рдирд╛, рдЖрдкрдХреЛ рдкреЗрдбрд╝ рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдмрд╣реБрдд рд╢реБрд░реБрдЖрдд рд╕реЗ, рдЬреНрдЮрд╛рдд рдиреЛрдб рддрдХ, рдФрд░ рдлрд┐рд░ рдПрдХ рдФрд░ рдПрди-рдиреЛрдб рдкрд░ рдЬрд╛рдирд╛ рд╣реЛрдЧрд╛ред рдкреИрд░реЗрдВрдЯ рдкреЙрдЗрдВрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рдкреЗрдбрд╝ рдХреЛ рдЯреНрд░реЗрд╕ рдХрд░рддреЗ рд╕рдордп, рдиреЛрдбреНрд╕ рдХреЗ рдЪрд░рдгреЛрдВ рдХреЛ рд╡рд░реНрддрдорд╛рди рдиреЛрдб (рдкреНрд░рд╛рд░рдВрдн) рд╕реЗ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдирд┐рдореНрди рд░реВрдк рд╣реЛрдЧрд╛ред
  public static Node walkTheTree(Node start, int steps){ boolean fromright=true; Node shuttle=start, holder; if (shuttle.right!=null){ shuttle=shuttle.right; while (shuttle.left!=null) shuttle=shuttle.left; fromright=false; } int counter=0; do{ while (true){ if (!fromright && ++counter==steps) return shuttle; if (!fromright && shuttle.right!=null){ shuttle=shuttle.right; break; } holder=shuttle; shuttle=shuttle.parent; fromright=(holder==shuttle.right); } while (shuttle.left!=null) shuttle=shuttle.left; }while (true); } 

рдиреЛрдЯ : рд╕рд╛рдорд╛рдиреНрдп рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдкреЗрдбрд╝ рд╕реЗ рдкрд░реЗ рдЬрд╛рдиреЗ (рд░реВрдЯ рдиреЛрдб рд╕реЗ рдКрдкрд░ рдЙрдардиреЗ) рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рднреА рдЖрд╡рд╢реНрдпрдХ рд╣реИред

Source: https://habr.com/ru/post/In144850/


All Articles