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