| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 | 
							- 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 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()
 
- }
 
 
  |