Untitled
unknown
plain_text
3 years ago
2.6 kB
3
Indexable
package main import ( "fmt" "math/rand" "time" "strings" ) type bitreeNode struct { left *bitreeNode right *bitreeNode val int } type bitree struct { root *bitreeNode } func arr2tree (a []int, i int) (root *bitreeNode) { if i >= len(a) { return nil } //left a[2*i+1] //right a[2*i+2] root = &bitreeNode{nil,nil,a[i]} root.left = arr2tree(a,2*i+1) root.right = arr2tree(a,2*i+2) return root } func randSlice() []int { rando := []int{} for i := 0 ; i < 50 ; i++{ rando = append(rando, rand.Intn(101)) } return rando } func stampaAlberoASommario (node *bitreeNode, spaces int){ //node è la mia radice fmt.Print(strings.Repeat(" ",spaces)) fmt.Print("*") fmt.Println(node.val) if node.right == nil && node.left == nil{ return } if node.right != nil { stampaAlberoASommario(node.right,spaces+2) }else { fmt.Print(strings.Repeat(" ",spaces+2)) fmt.Println("*") } if node.left != nil { stampaAlberoASommario(node.left,spaces+2) }else { fmt.Print(strings.Repeat(" ",spaces+2)) fmt.Println("*") } } func stampaDiSostegno(spaces int,depth int){ x := 0 for i:=0 ; i < depth ; i++{ fmt.Print(strings.Repeat(" ",x+2)) fmt.Print("|") } } func stampaAlberoASommario2 (node *bitreeNode, spaces int,depth int){ //node è la mia radice stampaDiSostegno(spaces,depth) //fmt.Print(strings.Repeat(" ",spaces)) fmt.Print(strings.Repeat("_",spaces)) fmt.Println(node.val) if node.right == nil && node.left == nil{ return } if node.right != nil { stampaAlberoASommario2(node.right,spaces+2, depth+1) }else { //stampaDiSostegno(spaces,depth) /* fmt.Print(strings.Repeat(" ",spaces+2)) fmt.Print("|")*/ //depth := 0 stampaDiSostegno(spaces,depth+1) fmt.Print(strings.Repeat("_",spaces+2)) fmt.Println("*") } if node.left != nil { stampaAlberoASommario2(node.left,spaces+2, depth+1) }else {/* fmt.Print(strings.Repeat(" ",spaces+2)) fmt.Print("|")*/ //depth := 0 stampaDiSostegno(spaces,depth+1) fmt.Print(strings.Repeat("_",spaces+2)) fmt.Println("*") } } func main () { //Seed rand.Seed(time.Now().UnixNano()) //v := randSlice() //fmt.Println(randomSlice) v := []int{69,89,28,39,66,44,12,2,72} //v := []int{78,54,21,90,19,95} //v := []int{69,89,69,12,54,12,1,3} fmt.Println(v) a := arr2tree(v,0) //fmt.Println(a.left.left.left, a.right.right) //stampaAlberoASommario(a,0) stampaAlberoASommario2(a,0,0) }
Editor is loading...