go 二叉树
最近项目闲下来,刚好从erlang 转golang复习哈二叉树排序
1 package main 2 3 import( 4 "fmt" 5 ) 6 7 type tree struct{ 8 value int 9 left,right *tree 10 } 11 12 func main(){ 13 var root *tree 14 values:=[]int{8,7,6,11,10,12} 15 for _ ,v :=range values{ 16 root =add(root,v) 17 } 18 appendValues(values[:0],root) 19 20 fmt.Println("sort..... ",values) 21 22 } 23 24 func appendValues(values []int,t*tree) []int{ 25 if t != nil{ 26 values=appendValues(values,t.left) 27 values=append(values,t.value) 28 values=appendValues(values,t.right) 29 } 30 return values 31 } 32 33 34 func add(t *tree,value int) *tree{ 35 if t == nil{ 36 t=new(tree) 37 t.value=value 38 return t 39 } 40 if value < t.value{ 41 t.left=add(t.left,value) 42 }else{ 43 t.right=add(t.right,value) 44 } 45 return t 46 }