import Foundation

class BinaryTreeNode {
    let value: Int
    var left: BinaryTreeNode?
    var right: BinaryTreeNode?
    init(_ value: Int) {
        self.value = value
    }
}
struct BinaryTree {
    var root: BinaryTreeNode?

    mutating func insert(value: Int) {
        guard
            let node = root
            else {
                root = BinaryTreeNode(value)
                return
        }
        var array = [BinaryTreeNode]()
        array.append(node)
        while let first = array.first {
            array.remove(at: 0)
            if let left = first.left {
                array.append(left)
            } else {
                first.left = BinaryTreeNode(value)
                return
            }
            if let right = first.right {
                array.append(right)
            } else {
                first.right = BinaryTreeNode(value)
                return
            }
        }
    }
}