我正在这棵树中进行二分搜索,并期望 Find 递归在结果为真时结束。它确实有一个结果为真但即使它得到真值并运行返回语句,似乎继续运行并最终达到了false
当它找到值并返回时,如何使该程序结束?
http://play.golang.org/p/miWqRVo_XO
package main
import "fmt"
type Tree struct {
Left *Tree
Value int64
Right *Tree
}
func NewT(val int64) *Tree {
return &Tree{
Left: new(Tree),
Value: val,
Right: new(Tree),
}
}
func (T *Tree) Insert(val int64) *Tree {
if T == nil {
return &Tree{nil, val, nil}
}
if val < T.Value {
T.Left = T.Left.Insert(val)
} else {
T.Right = T.Right.Insert(val)
}
return T
}
func (T *Tree) Find(val int64) bool {
fmt.Printf("%v , %v\n", T.Value, val)
fmt.Printf("%v\n", T.Value == val)
if fmt.Sprintf("%v", T.Value) == fmt.Sprintf("%v", val) {
fmt.Println("True and we do return true")
return true
}
if val < T.Value {
T.Left.Find(val)
} else {
T.Right.Find(val)
}
fmt.Println("False")
return false
}
func main() {
t1 := NewT(5)
for i := 0; i < 10; i++ {
t1 = t1.Insert(int64(i))
}
fmt.Println("Result:", t1.Find(7))
}
输出是
5 , 7
false
0 , 7
false
5 , 7
false
6 , 7
false
7 , 7
true
True and we do return true
繁花不似锦
相关分类