Skip to content

Ceil of a Number

Implementation

Recursive

package main

import "fmt"

type Tree struct {
    data  int
    left  *Tree
    right *Tree
}

func main() {
    root := &Tree{
        data: 50,
        left: &Tree{
            data: 30,
            left: &Tree{
                data: 20,
            },
            right: &Tree{
                data: 40,
            },
        },
        right: &Tree{
            data: 70,
            left: &Tree{
                data: 60,
                left: &Tree{
                    data: 55,
                },
                right: &Tree{
                    data: 65,
                },
            },
            right: &Tree{
                data: 80,
            },
        }}

    res := findCeil(root, 66)
    if res != nil {
        fmt.Println(*res)
    } else {
        fmt.Println(res)
    }

}

func findCeil(root *Tree, val int) *int {
    if root == nil {
        return nil
    }
    if root.data == val {
        return &val
    } else if root.data < val {
        return findCeil(root.right, val)

    } else {
        res := findCeil(root.left, val)
        if res == nil {
            return &root.data
        }
        return res
    }

}