Hello Golang-nuts, Following code reads data from file and creates binary tree structure:
' // go run main.go < input package main import "fmt" type TreeNode struct { Value int Left *TreeNode Right *TreeNode } func main () { nodes := read() for i, node := range(nodes) { fmt.Printf("%p\n", &nodes[i]) printNode(&node) } //passing root node fmt.Println(nodes) fmt.Println(maxDepth(&nodes[len(nodes) - 1])) } func maxDepth(root *TreeNode) int { if root == nil { return 0 } dl := 1 + maxDepth(root.Left) dr := 1 + maxDepth(root.Right) if dl > dr { return dl } else { return dr } } func read() []TreeNode { /*test := &Node{ 1, nil, nil, } right := &Node{ 33, nil, nil, } test.Right = right fmt.Println(test) printNode(test)*/ var N int fmt.Scanf("%d", &N) fmt.Println("N: ", N) var nodes []TreeNode = make([]TreeNode, N) var val, indexLeft, indexRight int for i := 0; i < N; i++ { fmt.Scanf("%d %d %d", &val, &indexLeft, &indexRight) nodes[i].Value = val if indexLeft >= 0 { nodes[i].Left = &nodes[indexLeft] } if indexRight >= 0 { nodes[i].Right = &nodes[indexRight] } } return nodes } func printNode(n *TreeNode) { fmt.Print("Value: ", n.Value) if n.Left != nil { fmt.Print(" Left: ", n.Left.Value) } if n.Right != nil { fmt.Print(" Right: ", n.Right.Value) } fmt.Println() } ' Code works fine on Linux64 machine, result: "[{15 <nil> <nil>} {7 <nil> <nil>} {9 <nil> <nil>} {20 0x11958080 0x1195808c} {3 0x11958098 0x119580a4}]" maxDepth = 3 But if, I'm runing this code on windows 32 machine, I'm getting different result: "[{0 0x11a94000 0x11a94000} {15 <nil> <nil>} {15 <nil> <nil>} {7 <nil> <nil>} {7 <nil> <nil>}]" maxDepth = 1 which is not correct. Go version 10.0. Windows Server Standard 2007 SP2 2007. What is wrong? Is it a bug? Or something wrong with my code? This is something to do with fmt.Scanf When I don't read data from file using fmt.Scanf the code works fine on both machines: https://play.golang.org/p/Rhi5jJKGYjX Please advise. -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.