Problem List
The only thing I didn't have right for the longest time was not send left of one node and right of the other until I read the second hint.
func reverseOddLevels(root *TreeNode) *TreeNode {
level := 0
var dfs func(node, node2 *TreeNode, level int) (*TreeNode, *TreeNode)
dfs = func(node, node2 *TreeNode, level int) (*TreeNode, *TreeNode) {
if node == nil {
return nil,nil
}
dfs(node.Left, node2.Right, level + 1)
dfs(node.Right,node2.Left, level + 1)
if level % 2 == 0 {
node.Val,node2.Val = node2.Val,node.Val
}
return node, node2
}
if root.Left == nil {
return root
}
dfs(root.Left, root.Right, level)
return root
}