1- // https://contest.yandex.ru/contest/24810/run-report/160624033/
2-
3- // <template>
4- class Node {
5- private int value ;
6- private Node left ;
7- private Node right ;
8-
9- Node (Node left , Node right , int value ) {
10- this .left = left ;
11- this .right = right ;
12- this .value = value ;
13- }
14-
15- public int getValue () {
16- return value ;
17- }
18-
19- public Node getRight () {
20- return right ;
21- }
22-
23- public void setRight (Node right ) {
24- this .right = right ;
25- }
26-
27- public Node getLeft () {
28- return left ;
29- }
30-
31- public void setLeft (Node left ) {
32- this .left = left ;
33- }
34-
35- public void setValue (int value ) {
36- this .value = value ;
37- }
38- }
39- // <template>
1+ // https://contest.yandex.ru/contest/24810/run-report/160624089/
402
413public class Solution {
424
@@ -82,7 +44,8 @@ public class Solution {
8244 * Временная сложность: O(h), где h — высота дерева,
8345 * потому что мы спускаемся только по одному пути вниз.
8446 *
85- * Пространственная сложность: O(h) из-за стека рекурсии.
47+ * Пространственная сложность: O(h) из-за стека рекурсии,
48+ * где h — высота дерева.
8649 */
8750
8851 public static Node remove (Node root , int key ) {
@@ -120,35 +83,42 @@ private static Node findMax(Node node) {
12083 }
12184 return node ;
12285 }
86+ }
87+
88+ // <template>
89+ class Node {
90+ private int value ;
91+ private Node left ;
92+ private Node right ;
12393
124- private static void test () {
125- Node node1 = new Node (null , null , 2 );
126- Node node2 = new Node (node1 , null , 3 );
127- Node node3 = new Node (null , node2 , 1 );
128- Node node4 = new Node (null , null , 6 );
129- Node node5 = new Node (node4 , null , 8 );
130- Node node6 = new Node (node5 , null , 10 );
131- Node node7 = new Node (node3 , node6 , 5 );
132-
133- Node newHead = remove (node7 , 10 );
134- assert newHead .getValue () == 5 ;
135- assert newHead .getRight () == node5 ;
136- assert newHead .getRight ().getValue () == 8 ;
137-
138- Node root = new Node (
139- new Node (new Node (null , null , 2 ), new Node (null , null , 4 ), 3 ),
140- new Node (new Node (null , null , 7 ), new Node (null , null , 9 ), 8 ),
141- 5
142- );
143- Node result = remove (root , 5 );
144- assert result .getValue () == 4 ;
145- assert result .getLeft ().getValue () == 3 ;
146- assert result .getRight ().getValue () == 8 ;
147-
148- Node single = new Node (null , null , 1 );
149- assert remove (single , 1 ) == null ;
150-
151- Node unchanged = new Node (null , null , 1 );
152- assert remove (unchanged , 2 ) == unchanged ;
94+ Node (Node left , Node right , int value ) {
95+ this .left = left ;
96+ this .right = right ;
97+ this .value = value ;
15398 }
154- }
99+
100+ public int getValue () {
101+ return value ;
102+ }
103+
104+ public Node getRight () {
105+ return right ;
106+ }
107+
108+ public void setRight (Node right ) {
109+ this .right = right ;
110+ }
111+
112+ public Node getLeft () {
113+ return left ;
114+ }
115+
116+ public void setLeft (Node left ) {
117+ this .left = left ;
118+ }
119+
120+ public void setValue (int value ) {
121+ this .value = value ;
122+ }
123+ }
124+ // <template>
0 commit comments