1
+ package chapter14 ;
2
+
3
+ public class Tree {
4
+
5
+ String key ;
6
+ int val ;
7
+ Tree left ;
8
+ Tree right ;
9
+ public Tree (String k , int v , Tree l , Tree r ) {
10
+ key = k ; val = v ; left = l ; right = r ;
11
+ }
12
+ }
13
+
14
+ class TreeProcessor {
15
+ public static int lookup (String k , int defaultval , Tree t ) {
16
+ if (t == null ) return defaultval ;
17
+ if (k .equals (t .key )) return t .val ;
18
+ return lookup (k , defaultval , k .compareTo (t .key ) < 0 ? t .left : t .right );
19
+ }
20
+
21
+ public static void update (String k , int v , Tree t ) {
22
+ if (t == null ) {}
23
+ else if (t .key == k ) {t .val = v ;}
24
+ else {
25
+ update (k , v , k .compareTo (t .key ) < 0 ? t .left : t .right );
26
+ }
27
+ }
28
+
29
+ public static Tree update1 (String k , int v , Tree t ) {
30
+ if (t == null ) {
31
+ t = new Tree (k , v , null , null );
32
+ }
33
+ else if (t .key == k ) {
34
+ t .val = v ;
35
+ }
36
+ else if (k .compareTo (t .key ) < 0 ) {
37
+ t .left = update1 (k , v , t .left );
38
+ }
39
+ else {
40
+ t .right = update1 (k , v , t .right );
41
+ }
42
+ return t ;
43
+ }
44
+
45
+ public static Tree fupdate (String k , int newval , Tree t ) {
46
+ return (t == null ) ?
47
+ new Tree (k , newval , null , null ) :
48
+ k .equals (t .key ) ?
49
+ new Tree (k , newval , t .left , t .right ) :
50
+ k .compareTo (t .key ) < 0 ?
51
+ new Tree (k , newval , fupdate (k , newval , t .left ), t .right ) :
52
+ new Tree (k , newval , t .left , fupdate (k , newval , t .right ));
53
+ }
54
+ }
0 commit comments