public static <T> BinaryTree<T> find_kth_node_binary_tree(BinaryTree<T> root, int k) {
        BinaryTree<T> n = root;
        while(n != null) {
            int left_size = n.getLeft() != null ? n.getLeft().getSize() : 0;
            if(left_size < k - 1) {
                k -= (left_size + 1);
                n = n.getRight();
            } else if(left_size == k - 1) {
                return n;
            } else { // left_size > k - 1.
                n = n.getLeft();
            }
        }
        throw new RuntimeException("no k-th node in binary tree");
    }