From 01f3a216d04a5289266ed0934d2a652bb526250d Mon Sep 17 00:00:00 2001 From: Vasko Zdravevski Date: Wed, 8 May 2019 21:27:29 -0600 Subject: [PATCH] day 258: simplify the logic --- day258/problem.go | 33 +++++++++++++-------------------- 1 file changed, 13 insertions(+), 20 deletions(-) diff --git a/day258/problem.go b/day258/problem.go index e7a7bd1..baafe42 100644 --- a/day258/problem.go +++ b/day258/problem.go @@ -17,30 +17,23 @@ func BoustrophedonOrder(root *IntBinaryTree) []int { leftToRight := true for len(levels) != 0 { var nextLevel []*IntBinaryTree - if leftToRight { - for _, n := range levels { - result = append(result, n.Value) - if n.Left != nil { - nextLevel = append(nextLevel, n.Left) - } - if n.Right != nil { - nextLevel = append(nextLevel, n.Right) - } + for _, n := range levels { + result = append(result, n.Value) + if n.Left != nil { + nextLevel = append(nextLevel, n.Left) } - } else { - for i := len(levels) - 1; i >= 0; i-- { - result = append(result, levels[i].Value) - j := len(levels) - 1 - i - if levels[j].Left != nil { - nextLevel = append(nextLevel, levels[j].Left) - } - if levels[j].Right != nil { - nextLevel = append(nextLevel, levels[j].Right) - } + if n.Right != nil { + nextLevel = append(nextLevel, n.Right) + } + } + if !leftToRight { + toReverse := result[len(result)-len(levels):] + for i := 0; i < len(toReverse)/2; i++ { + toReverse[i], toReverse[len(toReverse)-1-i] = toReverse[len(toReverse)-1-i], toReverse[i] } } - levels = nextLevel leftToRight = !leftToRight + levels = nextLevel } return result }