File tree Expand file tree Collapse file tree 1 file changed +75
-0
lines changed Expand file tree Collapse file tree 1 file changed +75
-0
lines changed Original file line number Diff line number Diff line change
1
+ package main
2
+
3
+ func main () {
4
+ name := "hamed"
5
+ namePtr := & name
6
+ namePtr2Ptr := & namePtr
7
+
8
+ }
9
+
10
+ func search1 () {
11
+ t1 := & Tree [int ]{
12
+ cmp : func (a int , b int ) int {
13
+ if a < b {
14
+ return - 1
15
+ } else if a > b {
16
+ return 1
17
+ } else {
18
+ return 0
19
+ }
20
+
21
+ },
22
+ root : & leaf [int ]{val : 12 },
23
+ }
24
+
25
+ for i := 0 ; i < 1000 ; i ++ {
26
+ root := t1 .root
27
+ var left = root .left
28
+ var right = root .right
29
+ left .val = i
30
+ }
31
+ }
32
+
33
+ func search2 () {
34
+
35
+ }
36
+
37
+ func (bt * Tree [T ]) find1 (val T ) * leaf [T ] {
38
+ pl := bt .root
39
+ for pl != nil {
40
+ switch cmp := bt .cmp (val , (* pl ).val ); {
41
+ case cmp < 0 :
42
+ pl = (* pl ).left
43
+ case cmp > 0 :
44
+ pl = (* pl ).right
45
+ default :
46
+ return pl
47
+ }
48
+ }
49
+ return pl
50
+ }
51
+
52
+ func (bt * Tree [T ]) find (val T ) * * leaf [T ] {
53
+ pl := & bt .root
54
+ for * pl != nil {
55
+ switch cmp := bt .cmp (val , (* pl ).val ); {
56
+ case cmp < 0 :
57
+ pl = & (* pl ).left
58
+ case cmp > 0 :
59
+ pl = & (* pl ).right
60
+ default :
61
+ return pl
62
+ }
63
+ }
64
+ return pl
65
+ }
66
+
67
+ type Tree [T any ] struct {
68
+ cmp func (T , T ) int
69
+ root * leaf [T ]
70
+ }
71
+
72
+ type leaf [T any ] struct {
73
+ val T
74
+ left , right * leaf [T ]
75
+ }
You can’t perform that action at this time.
0 commit comments