Added files. Semicolon made no difference. Still wrong result on win32.

On Thursday, April 19, 2018 at 10:45:35 AM UTC-7, Louki Sumirniy wrote:
>
> You need to show the input file also. I can only guess this has something 
> to do with maybe cr/lf? What happens if you add a distinct separator to the 
> input such as a semicolon?
>
> On Thursday, 19 April 2018 20:31:56 UTC+3, Alex Dvoretskiy wrote:
>>
>> 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.

Attachment: input
Description: Binary data

Attachment: main.go
Description: Binary data

Reply via email to