| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 | package mainimport (	"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 toLinkedList(num []int) *ListNode {	length := len(num)	if length == 0 {		return nil	}	head := ListNode{num[0], nil}	curr := &head	for i := 1; i < length; i++ {		curr.Next = &ListNode{num[i], nil}		curr = curr.Next	}	return &head}func printList(head *ListNode) {	curr := head	for curr != nil {		print(strconv.FormatInt(int64(curr.Val), 10), " ")		curr = curr.Next	}	println()}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()}
 |