package main import ( "strconv" ) // ListNode ... type ListNode struct { Val int Next *ListNode } // TreeNode ... type TreeNode struct { Val int Left *TreeNode Right *TreeNode } func abs(x int) int { if x < 0 { return -x } return x } func maxInt(x, y int) int { if x > y { return x } return y } func minInt(x, y int) int { if x < y { return x } return y } func list2str(head *ListNode) string { curr := head str := "" for curr != nil { str += strconv.FormatInt(int64(curr.Val), 10) + " " curr = curr.Next } return str } func printTree(root *TreeNode) { // Level order traversal if root == nil { println("nil") return } queue := make([]*TreeNode, 0) // Important! queue = append(queue, root) for len(queue) != 0 { curr := queue[0] queue = queue[1:] // Dequeue if curr == nil { print("nil ") continue } print(curr.Val, " ") if curr.Left != nil { queue = append(queue, curr.Left) } else if curr.Right != nil { queue = append(queue, nil) } if curr.Right != nil { queue = append(queue, curr.Right) } else if curr.Left != nil { queue = append(queue, nil) } } println() }