Instant Download Data structures and algorithms made easy in Java data structure and algorithmic puzzles 2nd Edition Narasimha Karumanchi PDF All Chapters
Instant Download Data structures and algorithms made easy in Java data structure and algorithmic puzzles 2nd Edition Narasimha Karumanchi PDF All Chapters
https://ebookgate.com/product/data-structures-algorithms-and-
applications-in-c-2nd-edition-sartaj-sahni/
ebookgate.com
https://ebookgate.com/product/java-structures-data-structures-in-java-
for-the-principled-programmer-2nd-edition-duane-bailey/
ebookgate.com
https://ebookgate.com/product/data-structures-and-abstractions-with-
java-2nd-ed-edition-carrano/
ebookgate.com
https://ebookgate.com/product/data-structures-and-algorithms-in-c-4th-
edition-adam-drozdek/
ebookgate.com
Data Structures and Algorithms in C 1st Edition Michael
Mcmillan
https://ebookgate.com/product/data-structures-and-algorithms-in-c-1st-
edition-michael-mcmillan/
ebookgate.com
https://ebookgate.com/product/data-structures-and-algorithms-
using-c-1st-edition-michael-mcmillan/
ebookgate.com
https://ebookgate.com/product/java-software-structures-designing-and-
using-data-structures-3rd-edition-john-lewis/
ebookgate.com
https://ebookgate.com/product/java-foundations-introduction-to-
program-design-and-data-structures-2nd-edition-john-lewis/
ebookgate.com
https://ebookgate.com/product/data-structures-outside-in-with-
java-1st-edition-sesh-venugopal/
ebookgate.com
Data Structures
And
Algorithms
Made Easy In JAVA
Data Structures and Algorithmic Puzzles
By
Narasimha Karumanchi
©
Copyright 2020 CareerMonk Publications. All rights reserved.
All rights reserved. No part of this book may be reproduced in any form or by any electronic or mechanical means, including information
storage and retrieval systems, without written permission from the publisher or author.
This book has been published with all efforts taken to make the material error-free after the consent of the author. However, the author and
the publisher do not assume and hereby disclaim any liability to any party for any loss, damage, or disruption caused by errors or omissions,
whether such errors or omissions result from negligence, accident, or any other cause.
While every effort has been made to avoid any mistake or omission, this publication is being sold on the condition and understanding that
neither the author nor the publishers or printers would be liable in any manner to any person by reason of any mistake or omission in this
publication or for any action taken or omitted to be taken or advice rendered or accepted on the basis of this work. For any defect in printing
or binding the publishers will be liable only to replace the defective copy by another copy of this work then available.
Acknowledgements
ℎ and ℎ , it is impossible to thank you adequately for everything you have done, from loving me unconditionally to raising me in
a stable household, where your persistent efforts and traditional values taught your children to celebrate and embrace life. I could not have
asked for better parents or role-models. You showed me that anything is possible with faith, hard work and determination.
This book would not have been possible without the help of many people. I would like to express my gratitude to all of the people who
provided support, talked things over, read, wrote, offered comments, allowed me to quote their remarks and assisted in the editing,
proofreading and design. In particular, I would like to thank the following individuals:
- ℎ ℎ
M-Tech,
Founder, .
Preface
Dear Reader,
Please hold on! I know many people typically do not read the Preface of a book. But I strongly recommend that you read this particular
Preface.
It is not the main objective of this book to present you with the theorems and proofs on and ℎ . I have followed
a pattern of improving the problem solutions with different complexities (for each problem, you will find multiple solutions with different,
and reduced, complexities). Basically, it’s an enumeration of possible solutions. With this approach, even if you get a new question, it will
show you a way to think about the possible solutions. You will find this book useful for interview preparation, competitive exams preparation,
and campus interview preparations.
As a , if you read the complete book, I am sure you will be able to challenge the interviewers. If you read it as an , it
will help you to deliver lectures with an approach that is easy to follow, and as a result your students will appreciate the fact that they have
opted for Computer Science / Information Technology as their degree.
This book is also useful for and during their academic preparations. In all the
chapters you will see that there is more emphasis on problems and their analysis rather than on theory. In each chapter, you will first read
about the basic required theory, which is then followed by a section on problem sets. In total, there are approximately 700 algorithmic
problems, all with solutions.
If you read the book as a preparing for competitive exams for Computer Science / Information Technology, the content covers
the topics in full detail. While writing this book, my main focus was to help students who are preparing for these exams.
In all the chapters you will see more emphasis on problems and analysis rather than on theory. In each chapter, you will first see the basic
required theory followed by various problems.
For many problems, solutions are provided with different levels of complexity. We start with the solution and slowly
move toward the possible for that problem. For each problem, we endeavor to understand how much time the algorithm takes
and how much memory the algorithm uses.
It is recommended that the reader does at least one complete reading of this book to gain a full understanding of all the topics that are
covered. Then, in subsequent readings you can skip directly to any chapter to refer to a specific topic. Even though many readings have been
done for the purpose of correcting errors, there could still be some minor typos in the book. If any are found, they will be updated
at . . . You can monitor this site for any corrections and also for new problems and solutions. Also, please provide
your valuable suggestions at: @ . .
I wish you all the best and I am confident that you will find this book useful.
- ℎ ℎ
M-Tech,
Founder, .
Other Books by Narasimha Karumanchi
IT Interview Questions
Elements of Computer Networking
Data Structures and Algorithmic Thinking with Python
Data Structures and Algorithms Made Easy (C/C++)
Coding Interview Questions
Data Structures and Algorithms for GATE
Peeling Design Patterns
Algorithm Design Techniques
Data Structure Operations Cheat Sheet
Space
Average Case Time Complexity Worst Case Time Complexity
Data Structure Complexity
Name Accessing Accessing
Search Insertion Deletion Search Insertion Deletion Worst Case
element element
Arrays O(1) O( ) O( ) O( ) O(1) O( ) O( ) O( ) O( )
Stacks O( ) O( ) O(1) O(1) O( ) O( ) O(1) O(1) O( )
Queues O( ) O( ) O(1) O(1) O( ) O( ) O(1) O(1) O( )
Binary Trees O( ) O( ) O( ) O( ) O( ) O( ) O( ) O( ) O( )
Binary Search
O( ) O( ) O( ) O( ) O( ) O( ) O( ) O( ) O( )
Trees
Balanced
Binary Search O( ) O( ) O( ) O( ) O( ) O( ) O( ) O( ) O( )
Trees
Hash Tables N/A O(1) O(1) O(1) N/A O( ) O( ) O( ) O( )
Note: For best case operations, the time complexities are O(1).
Chapter
INTRODUCTION 1
The objective of this chapter is to explain the importance of the analysis of algorithms, their notations, relationships and solving as many
problems as possible. Let us first focus on understanding the basic elements of algorithms, the importance of algorithm analysis, and then
slowly move toward the other topics as mentioned above. After completing this chapter, you should be able to find the complexity of any
given algorithm (especially recursive functions).
1.1 Variables
Before getting in to the definition of variables, let us relate them to an old mathematical equation. Many of us would have solved many
mathematical equations since childhood. As an example, consider the equation below:
+2 −2 =1
We don’t have to worry about the use of this equation. The important thing that we need to understand is that the equation has names ( and
), which hold values (data). That means the ( and ) are placeholders for representing data. Similarly, in computer science
programming we need something for holding data, and is the way to do that.
1.1 Variables 15
Data Structures and Algorithms Made Easy in Java Introduction
…
private char data;
//Operations
}
The diagram below shows the relationship between different rates of growth.
4 D
e
c
2 r
e
a
s
i
log n
g
log ( !)
R
a
t
e
s
2
O
f
G
r
o
w
t
h
log log
( )
( )
Rate of growth
Input size,
Let us see the O−notation with a little more detail. O−notation defined as O( ( )) = { ( ): there exist positive constants and such
that 0 ≤ ( ) ≤ ( ) for all ≥ }. ( ) is an asymptotic tight upper bound for ( ). Our objective is to give the smallest rate of
growth ( ) which is greater than or equal to the given algorithms’ rate of growth ( ).
Generally, we discard lower values of . That means the rate of growth at lower values of is not important. In the figure, is the point
from which we need to consider the rate of growth for a given algorithm. Below , the rate of growth could be different. is called threshold
for the given function.
Big-O Visualization
O( ( )) is the set of functions with smaller or the same order of growth as ( ). For example; O( ) includes O(1), O( ), O( ), etc.
Note: Analyze the algorithms at larger values of only. What this means is, below we do not care about the rate of growth.
Big-O Examples
Example-1 Find upper bound for ( ) = 3 + 8
Solution: 3 + 8 ≤ 4 , for all ≥ 8
∴ 3 + 8 = O( ) with c = 4 and =8
Example-2 Find upper bound for ( ) = + 1
Solution: + 1 ≤ 2 , for all ≥ 1
∴ + 1 = O( ) with = 2 and = 1
Example-3 Find upper bound for ( ) = + 100 + 50
Solution: + 100 + 50 ≤ 2 , for all ≥ 11
∴ + 100 + 50 = O( ) with = 2 and = 11
Example-4 Find upper bound for ( ) = 2 − 2
Solution: 2 − 2 ≤ 2 , for all ≥ 1
∴ 2 − 2 = O( ) with = 2 and =1
Example-5 Find upper bound for ( ) =
Solution: ≤ , for all ≥ 1
∴ = O( ) with = 1 and =1
Example-6 Find upper bound for ( ) = 410
Solution: 410 ≤ 410, for all ≥ 1
∴ 410 = O(1 ) with = 1 and =1
No Uniqueness?
There is no unique set of values for and in proving the asymptotic bounds. Let us consider, 100 + 5 = O( ). For this function there
are multiple and values possible.
Solution1: 100 + 5 ≤ 100 + = 101 ≤ 101 , for all ≥ 5, = 5 and = 101 is a solution.
Solution2: 100 + 5 ≤ 100 + 5 = 105 ≤ 105 , for all ≥ 1, = 1 and = 105 is also a solution.
( )
( ))
Rate of growth
Input size,
The Ω notation can be defined as Ω( ( )) = { ( ): there exist positive constants c and such that 0 ≤ ( ) ≤ ( ) for all ≥
}. ( ) is an asymptotic tight lower bound for ( ). Our objective is to give the largest rate of growth ( ) which is less than or equal to
the given algorithm’s rate of growth ( ).
Ω Examples
Example-1 Find lower bound for ( ) = 5 .
Solution: , Such that: 0 5 5 = 5 and =1
∴5 = ( ) with = 5 and =1
Example-2 Prove ( ) = 100 + 5 ≠ ( ).
Solution: c, Such that: 0 100 + 5
100 + 5 100 + 5 ( 1) = 105
105 ( – 105) 0
Since is positive – 105 0 105/
Contradiction: cannot be smaller than a constant
Example-3 2 = ( ), = ( ), = ( ).
Rate of growth c ( )
Input size,
This notation decides whether the upper and lower bounds of a given function (algorithm) are the same. The average running time of an
algorithm is always between the lower bound and the upper bound. If the upper bound (O) and lower bound () give the same result, then
the notation will also have the same rate of growth. As an example, let us assume that ( ) = 10 + is the expression. Then, its tight
upper bound ( ) is O( ). The rate of growth in the best case is ( ) = O( ).
In this case, the rates of growth in the best case and worst case are the same. As a result, the average case will also be the same. For a given
function (algorithm), if the rates of growth (bounds) for O and are not the same, then the rate of growth for the case may not be the same.
In this case, we need to consider all possible time complexities and take the average of those (for example, for a quick sort average case, refer
to the chapter).
Now consider the definition of notation. It is defined as ( ( )) = { ( ): there exist positive constants , and such that 0 ≤
( ) ≤ ( ) ≤ ( ) for all ≥ }. ( ) is an asymptotic tight bound for ( ). ( ( )) is the set of functions with the same
order of growth as ( ).
Examples
Example 1 Find bound for ( ) = −
Solution: ≤ − ≤ , for all, ≥ 2
∴ − = ( ) with = 1/5, = 1 and =2
Example 2 Prove ≠ ( )
Solution: c 2
≤ ≤ c 2 only holds for: ≤ 1/c1
∴ ≠ ( )
Example 3 Prove 6 ≠ ( )
Solution: ≤6 ≤c only holds for: ≤ c2 /6
∴6 ≠ ( )
Example 4 Prove ≠ ( )
Solution: c ≤ ≤ c c ≥ log
, ≥ 0 – Impossible
Important Notes
For analysis (best case, worst case and average), we try to give the upper bound (O) and lower bound () and average running time (). From
the above examples, it should also be clear that, for a given function (algorithm), getting the upper bound (O) and lower bound () and
average running time () may not always be possible. For example, if we are discussing the best case of an algorithm, we try to give the upper
bound (O) and lower bound () and average running time ().
In the remaining chapters, we generally focus on the upper bound (O) because knowing the lower bound () of an algorithm is of no practical
importance, and we use the notation if the upper bound (O) and lower bound () are the same.
Total time = × × = = O( ).
3) Consecutive statements: Add the time complexities of each statement.
x = x +1; //constant time
// executed n times
for (i=1; i<=n; i++)
m = m + 2; //constant time
//outer loop executed n times
for (i=1; i<=n; i++) {
//inner loop executed n times
for (j=1; j<=n; j++)
k = k+1; //constant time
}
Total time = + + = O( ).
4) If-then-else statements: Worst-case running time: the test, plus ℎ the ℎ part or the part (whichever is the larger).
//test: constant
if(length( ) == 0 ) {
return false; //then part: constant
}
else { // else part: (constant + constant) * n
for (int n = 0; n < length( ); n++) {
// another if : constant + constant (no else part)
if(!list[n].equals(otherList.list[n]))
//constant
return false;
}
}
Total time = + ( + ) ∗ = O( ).
5) Logarithmic complexity: An algorithm is O( ) if it takes a constant time to cut the problem size by a fraction (usually by ½). As
an example let us consider the following program:
for (i=1; i<=n;)
i = i*2;
If we observe carefully, the value of is doubling every time. Initially = 1, in next step = 2, and in subsequent steps = 4, 8 and
so on. Let us assume that the loop is executing some times. At step 2 = , and at ( + 1) step we come out of the .
Taking logarithm on both sides, gives
2 =
2=
= //if we assume base-2
Total time = O( ).
Note: Similarly, for the case below, the worst case rate of growth is O( ). The same discussion holds good for the decreasing sequence as
well.
for (i=n; i>=1;)
i = i/2;
Another example: binary search (finding a word in a dictionary of pages)
Look at the center point in the dictionary
Is the word towards the left or right of center?
Repeat the process with the left or right part of the dictionary until the word is found.
= + = ( )
= ( ) = –
= =
Arithmetic series
( + 1)
= 1 + 2 + ⋯+ =
2
Geometric series
−1
=1+ + …+ = ( ≠ 1)
−1
Harmonic series
1 1 1
= 1 + + …+ ≈
2
Other important formulae
1
= 1 + 2 +⋯+ ≈
+1
each with size √ ). As we can see, the size of the subproblems at the first level of recursion is . So, let us guess that T( ) = O( ), and
then try to prove that our guess is correct.
Let’s start by trying to prove an bound T( ) ≤ :
T( ) = √ T(√ ) +
≤ √ . √ √ +
= . √ +
= .c. . +
≤
The last inequality assumes only that 1 ≤ c. . . This is correct if is sufficiently large and for any constant , no matter how small. From
the above proof, we can see that our guess is correct for the upper bound. Now, let us prove the bound for this recurrence.
T( ) = √ T(√ ) +
≥ √ . √ √ +
= . √ +
= . . . +
≥
The last inequality assumes only that 1 ≥ . . . This is incorrect if is sufficiently large and for any constant . From the above proof,
we can see that our guess is incorrect for the lower bound.
From the above discussion, we understood that Θ( ) is too big. How about Θ( )? The lower bound is easy to prove directly:
T( ) = √ T(√ ) + ≥
Now, let us prove the upper bound for this Θ( ).
T( ) = √ T(√ ) +
≤ √ . .√ +
= . +
= ( + 1)
≰
From the above induction, we understood that Θ( ) is too small and Θ( ) is too big. So, we need something bigger than and smaller
than . How about ?
Proving the upper bound for :
T( ) = √ T(√ ) +
≤ √ . .√ √ +
= . . √ +
√
≤ √
Proving the lower bound for :
T( ) = √ T(√ ) +
≥ √ . .√ √ +
= . . √ +
√
≱ √
The last step doesn’t work. So, Θ( ) doesn’t work. What else is between and ? How about ?
Proving upper bound for :
T( ) = √ T(√ ) +
≤ √ . .√ √ +
= . . - . +
≤ , if ≥ 1
Proving lower bound for :
T( ) = √ T(√ ) +
≥ √ . .√ √ +
= . . - . +
≥ , if ≤ 1
From the above proofs, we can see that T( ) ≤ , if ≥ 1 and T( ) ≥ , if ≤ 1. Technically, we’re still missing the
base cases in both proofs, but we can be fairly confident at this point that T( ) = Θ( ).
while( s <= n) {
i++;
s= s+i;
System.out.println(“*");
}
}
We can define the ‘ ’ terms according to the relation = + . The value of ‘ ’ increases by 1 for each iteration. The value contained in
‘ ’ at the iteration is the sum of the first ‘ ’ positive integers. If is the total number of iterations taken by the program, then the ℎ
loop terminates if:
( )
1 + 2+...+ = > ⟹ = O(√ ).
Problem-24 Find the complexity of the function given below.
public void function(int n) {
int i, count =0;
for(i=1; i*i<=n; i++)
count++;
}
Solution:
void function(int n) {
int i, count =0;
for(i=1; i*i<=n; i++)
count++;
}
In the above-mentioned function the loop will end, if > ⟹ ( ) =O(√ ). The reasoning is same as that of Problem-23.
Problem-25 What is the complexity of the program given below?
public void function(int n) {
int i, j, k , count =0;
for(i=n/2; i<=n; i++)
for(j=1; j + n/2<=n; j++)
for(k=1; k<=n; k= k * 2)
count++;
}
Solution: Consider the comments in the following function.
public void function(int n) {
int i, j, k , count =0;
//Outer loop execute n/2 times
for(i=n/2; i<=n; i++)
//Middle loop executes n/2 times
for(j=1; j + n/2<=n; j++)
//Inner loop execute logn times
for(k=1; k<=n; k= k * 2)
count++;
}
The complexity of the above function is O( ).
Problem-26 What is the complexity of the program given below?
public void function(int n) {
int i, j, k , count =0;
for(i=n/2; i<=n; i++)
for(j=1; j<=n; j= 2 * j)
for(k=1; k<=n; k= k * 2)
count++;
}
Solution: Consider the comments in the following function.
public void function(int n) {
int i, j, k , count =0;
//Outer loop execute n/2 times
for(i=n/2; i<=n; i++)
//Middle loop executes logn times
for(j=1; j<=n; j= 2 * j)
//Inner loop execute logn times
for(k=1; k<=n; k= k*2)
count++;
}
The complexity of the above function is O( ).
Problem-27 Find the complexity of the program given below.
( ) = (1) + ( − 1)
( ) = (1) + −
(( + 1)(2 + 1) ( + 1)
( )=1+ −
6 2
( ) =( )
Note: We can use the master theorem for this problem.
Problem-34 Consider the following program:
Fib[n]
if(n==0) then return 0
else if(n==1) then return 1
else return Fib[n-1]+Fib[n-2]
Solution: The recurrence relation for the running time of this program is
( ) = ( − 1) + ( − 2) + .
Note T(n) has two recurrence calls indicating a binary tree. Each step recursively calls the program for reduced by 1 and 2, so the depth of
the recurrence tree is O( ). The number of leaves at depth is 2 since this is a full binary tree, and each leaf takes at least O(1) computations
for the constant factor. Running time is clearly exponential in .
Problem-35 Running time of following program?
public void function(n) {
for(int i = 1 ; i <= n ; i + + )
for(int j = 1 ; j <= n ; j+ = i )
System.out.println(“*”) ;
}
Solution: Consider the comments in the function below:
public void function (n) {
//this loop executes n times
for(int i = 1 ; i <= n ; i + + )
//this loop executes j times with j increase by the rate of i
for(int j = 1 ; j <= n ; j+ = i )
System.out.println(“*”) ;
}
In the above program, the inner loop executes n/i times for each value of . Its running time is × (∑ni=1 n/i) = O( ).
Problem-36 What is the complexity of ∑ ?
Solution: Using the logarithmic property, = + , we can see that this problem is equivalent to
= 1+ 2+⋯+ = (1 × 2 × … × ) = ( !) ≤ ( )≤
}
We can assume that for asymptotical analysis = for every integer ≥ 1. The recurrence for this code is ( ) = 3 ( ) + Θ(1).
Using master theorem, we get ( ) = Θ( ).
Problem-38 What is the running time of the following recursive function (specified as a function of the input value )? First write a
recurrence formula, and show its solution using induction.
public void function(int n) {
if(n <= 1) return;
for (int i=1 ; i <= 3 ; i++ )
function (n − 1).
}
Solution: Consider the comments in the below function:
public void function (int n) {
//constant time
if(n <= 1) return;
//this loop executes 3 times with recursive call of n-1 value
for (int i=1 ; i <= 3 ; i++ )
function (n − 1).
}
The statement requires constant time (O(1)). With the loop, we neglect the loop overhead and only count three times that the function
is called recursively. This implies a time complexity recurrence:
( ) = , ≤ 1;
= + 3 ( − 1), > 1.
Using the master theorem, we get ( ) = Θ(3 ).
Problem-39 Write a recursion formula for the running time ( ) of the function , whose code is given below. What is the running
time of , as a function of ?
public void function (int n) {
if(n <= 1) return;
for(int i = 1; i < n; i + +)
System.out.println(“*”);
function ( 0.8n ) ;
}
Solution: Consider the comments in the below function:
public void function (int n) {
//constant time
if(n <= 1) return;
// this loop executes times with constant time loop
for(int i = 1; i < n; i + +)
System.out.println(“*”);
//recursive call with 0.8n
function ( 0.8n ) ;
}
4
The recurrence for this piece of code is ( ) = (. 8 ) + O( ) = T + O( ) = ( ) + O( ). Applying master theorem, we get
5n
( ) = O( ).
Problem-40 Find the complexity of the recurrence: ( ) = 2 (√ ) +
Solution: The given recurrence is not in the master theorem format. Let us try to convert this to the master theorem format by assuming =
2 . Applying the logarithm on both sides gives, = 2⟹ = . Now, the given function becomes:
( ) = (2 ) = 2 √2 + =2 2 + .
To make it simple we assume ( ) = (2 ) ⟹ ( ) = (2 ) ⟹ ( ) = 2 + . Applying the master theorem would result
( ) =O( ). If we substitute = back, ( ) = ( ) =O(( ) ).
Problem-41 Find the complexity of the recurrence: ( ) = (√ ) + 1
Solution: Applying the logic of Problem-40 gives ( ) = + 1. Applying the master theorem would result in ( ) =O( ).
Substituting = , gives ( ) = ( ) =O( ).
Problem-42 Find the complexity of the recurrence: ( ) = 2 (√ ) + 1
Solution: Applying the logic of Problem-40 gives: ( ) = 2 + 1. Using the master theorem results ( ) =O =O( ).
Substituting = gives ( ) = O( ).
Problem-43 Find the complexity of the function given below.
public int function (int n) {
if(n <= 2) return 1;
else
return (Function (floor(sqrt(n))) + 1);
}
Solution: Consider the comments in the below function:
public int function (int n) {
if(n <= 2) return 1; //constant time
else
// executes √ + 1 times
return (Function (floor(sqrt(n))) + 1);
}
For the above function, recurrence function can be given as: ( ) = (√ ) + 1. This is same as that of Problem-41.
Problem-44 Analyze the running time of the following recursive psuedocode as a function of .
public void function(int n) {
if( n < 2 ) return;
else counter = 0;
for i = 1 to 8 do
function ( );
for i =1 to do
counter = counter + 1;
}
Solution: Consider the comments in below psuedocode and call running time of function(n) as ( ).
public void function(int n) {
if( n < 2 ) return; //constant time
else counter = 0;
// this loop executes 8 times with n value half in every call
for i = 1 to 8 do
function ( );
// this loop executes times with constant time loop
for i =1 to do
counter = counter + 1;
}
( ) can be defined as follows:
( ) = 1 < 2,
=8 ( ) + 3 + 1 ℎ .
2
Using the master theorem gives: ( ) =Θ( ) = Θ( ).
Problem-45 Find the complexity of the pseudocode given below:
temp = 1
repeat
for i = 1 to n
temp = temp + 1;
n = ;
until n <= 1
Solution: Consider the comments in the pseudocode given below:
temp = 1 // constant time
repeat
// this loops executes n times
for i = 1 to n
temp = temp + 1;
//recursive call with value
n = ;
until n <= 1
The recurrence for this function is ( ) = ( /2) + . Using master theorem we get: ( ) = O( ).
Problem-46 Running time of the following program?
publicvoid function(int n) {
for(int i = 1 ; i <= n ; i + + )
for(int j = 1 ; j <= n ; j * = 2 )
System.out.println(“*”);
}
Solution: Consider the comments in the function given below:
public void function(int n) {
// this loops executes n times
for(int i = 1 ; i <= n ; i + + )
Solution:
public void function(int n) {
for (int i = 0; i<n; i++) // Executes n times
for(int j=i; j<i*i; j++) // Executes n*n times
if (j %i == 0){
for (int k = 0; k < j; k++) // Executes j times = (n*n) times
printf(" * ");
}
}
Time Complexity: O( 5 ).
Problem-58 To calculate 9 , give algorithm and discuss its complexity.
Solution: Start with 1 and multiply by 9 until reaching 9 .
Time Complexity: There are − 1 multiplications and each takes constant time giving a ( ) algorithm.
Problem-59 For Problem-58, can we improve the time complexity?
Solution: Refer to the chapter.
Problem-60 Find the complexity of the below function:
public void function(int n) {
int sum = 0;
for (int i = 0; i<n; i++)
if (i>j)
sum = sum +1;
else {
for (int k = 0; k < n; k++)
sum = sum -1;
}
}
}
Solution: Consider the worst-case.
public void function(int n) {
int sum = 0;
for (int i = 0; i<n; i++) // Executes times
if (i>j)
sum = sum +1; // Executes times
else {
for (int k = 0; k < n; k++) // Executes times
sum = sum -1;
}
}
}
Time Complexity: O( ).
Problem-61 Solve the following recurrence relation using the recursion tree method: T( )=T( ) +T( )+ .
Solution: How much work do we do in each level of the recursion tree?
T( )
T( ) T( )
2
T( ) T( ) T( ) T( )
2 3
T( ) T( ) T( ) T( ) 2 T( ) T( ) T( ) T( ) 2
2 3 2 3
In level 0, we take time. At level 1, the two subproblems take time:
1 2 1 4 25
+ = + =
2 3 4 9 36
1.28 Algorithms Analysis: Problems & Solutions 34
Data Structures and Algorithms Made Easy in Java Introduction
At level 2 the four subproblems are of size , , , and respectively. These two subproblems take time:
1 1 1 4 625 25
+ + + = =
4 3 3 9 1296 36
Similarly the amount of work at level is at most .
Let = , the total runtime is then:
T( ) ≤
1
=
1−∝
1
= 25
1 − 36
1
= 11
36
36
=
11
= O( )
That is, the first level provides a constant fraction of the total runtime.
Problem-62 Find the time complexity of recurrence T(n) = T( ) + T( ) + T( ) + .
Solution: Let us solve this problem by method of guessing. The total size on each level of the recurrance tree is less than , so we guess that
( ) = will dominate. Assume for all < that ≤ T( ) ≤ . Then,
+ + + ≤ T( ) ≤ + + +
( + + + ) ≤ T( ) ≤ ( + + + )
( + ) ≤ T( ) ≤ ( + )
If ≥ 8k and ≤ 8k, then = T( ) = . So, T( ) = Θ( ). In general, if you have multiple recursive calls, the sum of the arguments to
those calls is less than n (in this case + + < ), and ( ) is reasonably large, a good guess is T( ) = Θ(f( )).
Problem-63 Rank the following functions by order of growth: ( + 1)!, n!, 4 , ×3 ,3 + + 20 , ( ) , 4 ,4 , + 200,
/
20 + 500, 2 , , 1.
Solution:
Function Rate of Growth
( + 1)! O( !)
! O( !)
4 O(4 )
×3 O( 3 )
3 + + 20 O(3 )
3 O(( ) )
( ) Decreasing rate of growths
2
4 O( )
4 O( )
+ 200 O( )
20 + 500 O( )
2 O( )
/
O( / )
1 O(1)
.
Problem-64 Can we say 3 = O(3 )?
.
Solution: Yes: because 3 < 3 .
Problem-65 Can we say 2 = O(2 )?
Solution: No: because 2 = (2 ) = 8 not less than 2 .
Chapter
RECURSION AND
BACKTRACKING 2
2.1 Introduction
In this chapter, we will look at one of the important topics, “ ”, which will be used in almost every chapter, and also its relative
“ ”.
2.1 Introduction 36
Data Structures and Algorithms Made Easy in Java Recursion and Backtracking
}
}
Print (4)
Print (3)
Returns 0 Print (2)
Returns 0 Print (1)
Returns 0 to main function
Returns 0 Print (0)
Returns 0
Now, let us consider our factorial function. The visualization of factorial function with n = 4 will look like:
4!
4* 3!
4*6=24 is returned 3*2!
Recursion
Terminates when a base case is reached.
Each recursive call requires extra space on the stack frame (memory).
If we get infinite recursion, the program may run out of memory and result in stack overflow.
Solutions to some problems are easier to formulate recursively.
Iteration
Terminates when a condition is proven to be false.
Each iteration does not require any extra space.
An infinite loop could loop forever since there is no extra memory being created.
Iterative solutions to a problem may not always be as obvious as a recursive solution.
if(A.length() == 1 || index == 1)
return 1;
return (A[index -1] < A[index -2])?0: isArrayInSortedOrder(A, index -1);
}
Time Complexity: O( ). Space Complexity: O( ) for recursive stack space.
}
public static void main(String[] args) throws java.lang.Exception {
int n = 4;
BinaryStrings i = new BinaryStrings(n);
i.binary(n);
}
}
Let ( ) be the running time of ( ). Assume function . . takes time O(1).
, if < 0
( )=
2 ( − 1) + , otherwise
Using Subtraction and Conquer Master theorem, we get ( ) =O(2 ). This means the algorithm for generating bit-strings is optimal.
Problem-4 Generate all the strings of length drawn from 0. . . − 1.
Solution: Let us assume we keep current k-ary string in an array [0. . − 1]. Call function - (n, k):
import java.util.*;
class K_aryStrings {
int[] A;
public BinaryStrings(int n) {
A = new int[n];
}
public void base_K_strings(int n, int k) {
//process all k-ary strings of length m
if(n <= 0)
System.out.println(Arrays.toString(A)); //Assume array A is a class variable
else {
for (int j = 0 ; j < k ; j++) {
A[n-1] = j;
base_K_strings(n - 1, k);
}
}
}
public static void main(String[] args) throws java.lang.Exception {
int n = 4;
K_aryStrings obj = new K_aryStrings (n);
obj.base_K_strings(n, 3);
}
}
Let ( ) be the running time of − ( ). Then,
, <0
( )=
( − 1) + , ℎ
Using Subtraction and Conquer Master theorem, we get: ( ) =O( ).
Note: For more problems, refer to ℎ chapter.
Problem-5 Solve the recurrence T( ) = 2T( − 1) + 2 .
Solution: At each level of the recurrence tree, the number of problems is double from the previous level, while the amount of work being
done in each problem is half from the previous level. Formally, the level has 2 problems, each requiring 2 work. Thus the level
requires exactly 2 work. The depth of this tree is , because at the level, the originating call will be T( − ). Thus the total complexity
for T( ) is T( 2 ).
Chapter
LINKED LISTS 3
3.1 What is a Linked List?
One disadvantage of using arrays to store data is that arrays are static structures and therefore cannot be easily extended or reduced to fit the
data set. Arrays are also expensive to maintain new insertions and deletions. In this chapter we consider another data structure called Linked
Lists that addresses some of the limitations of arrays. A linked list is a data structure used for storing collections of data. A linked list has the
following properties. A linked list is a linear dynamic data structure. The number of nodes in a list is not fixed and can grow and shrink on
demand. Each node of a linked list is made up of two items - the data and a reference to the next node. The last node has a reference to null.
The entry point into a linked list is called the head of the list. It should be noted that head is not a separate node, but the reference to the first
node. If the list is empty then the head is a null reference.
Successive elements are connected by pointers.
The last element points to NULL.
Can grow or shrink in size during execution of a program.
Can be made just as long as required (until systems memory exhausts).
Does not waste memory space (but takes some extra memory for pointers). It allocates memory as list grows.
4 15 7 40 NULL
head
process takes one multiplication and one addition. Since these two operations take constant time, we can say the array access can be performed
in constant time.
Advantages of Arrays
Simple and easy to use
Faster access to the elements (constant access)
Disadvantages of Arrays
Preallocates all needed memory up front and wastes memory space for indices in the array that are empty.
Fixed size: The size of the array is static (specify the array size before using it).
One block allocation: To allocate the array itself at the beginning, sometimes it may not be possible to get the memory for the
complete array (if the array size is big).
Complex position-based insertion: To insert an element at a given position, we may need to shift the existing elements. This will
create a position for us to insert the new element at the desired position. If the position at which we want to add an element is at
the beginning, then the shifting operation is more expensive.
Dynamic Arrays
Dynamic array (also called , , , or ) is a random access, variable-size list data
structure that allows elements to be added or removed.
One simple way of implementing dynamic arrays is to initially start with some fixed size array. As soon as that array becomes full, create the
new array double the size of the original array. Similarly, reduce the array size to half if the elements in the array are less than half the size.
Note: We will see the implementation for in the , and ℎ chapters.
a field which is a pointer used to link one node to the next node. Generally "linked list" means a singly linked list. This list consists of a
number of nodes in which each node has a pointer to the following element. The link of the last node in the list is NULL, which
indicates the end of the list. Each node is allocated in the heap with a call to (), so the node memory continues to exist until it is explicitly
deallocated with a call to (). The node called a ℎ is the first node in the list. The last node's next pointer points to NULL value.
4 15 7 40 NULL
Head
Following is a type declaration for a linked list:
public class ListNode {
private int data;
private ListNode next;
public ListNode(int data){
this.data = data;
}
public void setData(int data){
this.data = data;
}
public int getData(){
return data;
}
public void setNext(ListNode next){
this.next = next;
}
public ListNode getNext(){
return this.next;
}
}
4 15 7 40 NULL
head
The ListLength() function takes a linked list as input and counts the number of nodes in the list. The function given below can be used for
printing the list data with extra print function.
public int length(ListNode headNode) {
int length = 0;
ListNode currentNode = headNode;
while(currentNode != null){
length++;
currentNode = currentNode.next;
}
return length;
}
Time Complexity: O( ), for scanning the list of size . Space Complexity: O(1), for creating a temporary variable.
head
Update head pointer to point to the new node.
new node
data 15 7 40 NULL
head
head
Last nodes next pointer points to the new node.
new node
4 15 7 0 data NULL
head
data
Position node’s next pointer now points to the new node.
node
4 15 7 40 NULL
head
data
new node
Note: We can implement the three variations of the operation separately.
Time Complexity: O( ). since, in the worst case, we may need to insert the node at the end of the list. Space Complexity: O(1).
4 15 7 40 NULL
Head Temp
Now, move the head nodes pointer to the next node and dispose of the temporary node.
4 15 7 40 NULL
Temp Head
4 15 7 40 NULL
4 15 7 40 NULL
Head
Previous node to tail Tail
Dispose of the tail node.
NULL
4 15 7 40 NULL
4 15 7 40 NULL
4 15 7 40 NULL
D ie Generalin war sehr stolz auf ihre Abstammung. Wie mußte ihr
nun zumute sein, als ihr so offen und ohne Vorbereitungen
mitgeteilt wurde, daß der letzte Träger ihres Namens nicht viel
mehr als ein bedauernswerter Idiot, fast ganz mittellos sei und sogar
Almosen annehme. Dem General war es um den denkbar größten
Eindruck zu tun, um sogleich ihr Interesse zu erwecken, sie von
anderen Gedanken abzulenken und hierdurch die Frage nach den
Perlen in Vergessenheit zu bringen.
Die Generalin hatte die Angewohnheit, wenn etwas geschehen
war, was ihr nicht behagte, mit weit offenen Augen und
unbestimmtem Blick, den Oberkörper gewöhnlich etwas
zurückgelegt, vor sich in die Luft zu starren und kein Wort zu
sprechen. Sie war eine stattliche Frau, in gleichem Alter wie ihr
Gatte, mit dunklem, schon stark graumeliertem, doch noch recht
dichtem Haar, einer leicht gebogenen Nase, mit gelblichen,
eingefallenen Wangen und dünnen Lippen. Ihre Stirn war hoch und
schmal; ihre grauen, ziemlich großen Augen konnten bisweilen einen
ganz unerwarteten Ausdruck annehmen. Sie hatte einmal die
Schwäche gehabt, zu glauben, daß ihr Blick sehr ausdrucksvoll sei,
und diese Überzeugung ließ sie sich auch jetzt noch nicht nehmen.
„Empfangen? Sie sagen, wir sollen ihn empfangen? Jetzt?
Sogleich?“
Die Generalin sah ihren etwas unsicher geschäftigen Iwan
Fedorowitsch mit besagten großen Augen an.
„Oh, was das betrifft, so braucht man bei dem nicht alle
Etikettevorschriften und Zeremonien zu beobachten, vorausgesetzt,
daß es dir, mein Freund“ (der General redete seine Gattin
gewöhnlich mit „mein Freund“ an), „daß es dir nur zusagt, ihn zu
empfangen,“ beeilte er sich erklärend hinzuzufügen. „Er ist ein
vollständiges Kind und so ein armer Junge: hat da gewisse Anfälle,
wie er sagt, von einer Krankheit wahrscheinlich; kommt soeben aus
der Schweiz, direkt von der Bahn, ist etwas eigenartig gekleidet, so–
o ... nach deutscher Art gewissermaßen, und hat zum Überfluß keine
Kopeke in der Tasche, tatsächlich; er weinte beinahe. Ich habe ihm
fünfundzwanzig Rubel geschenkt und will ihm in einer Kanzlei eine
kleine Schreiberstelle zu verschaffen suchen. Und euch, mesdames,
bitte ich, ihn gefälligst zu bewirten; denn er wird, glaube ich, auch
hungrig sein ...“
„Ich verstehe Sie nicht,“ fuhr die Generalin im selben Ton und mit
demselben Blick fort, „hungrig und hat Anfälle! Was für Anfälle?“
„Oh, die wiederholen sich nicht so oft, und dann – er ist ja fast
noch ein großes Kind, übrigens nicht ungebildet. Und euch wollte ich
bitten, mesdames,“ wandte er sich wieder an seine Töchter, „ihn ein
wenig zu examinieren; denn es ist doch immer gut, wenn man weiß,
was für Eigenschaften er hat.“
„Ex–a–mi–nie–ren?“ fragte die Generalin gedehnt und begann in
größter Verwunderung bald ihre Töchter, bald wiederum ihren
Gatten mit fragendem Blick anzusehen.
„Ach, mein Freund, das war natürlich nicht so gemeint, versteh
mich nicht falsch ... übrigens, wie du willst. Ich hatte die Absicht, ihn
gut zu behandeln und in unser Haus einzuführen; denn das wäre
doch ein gutes Werk.“
„In unser Haus einzuführen? Aus der Schweiz?“
„Die Schweiz ist eine Sache für sich ... doch, übrigens, wie gesagt:
ganz wie du willst. Ich meine ja nur, weil er doch auch ein Myschkin
ist, und vielleicht sogar verwandt mit dir, und dann: er weiß nicht
einmal, wo er sein Haupt hinlegen soll. Ich glaubte, daß es dich
interessieren würde, ihn kennen zu lernen; denn er gehört doch
gewissermaßen, nun ja, zur Familie.“
„Gewiß doch, maman, wenn man mit ihm nicht so zeremoniell zu
sein braucht. Und nach der Reise wird er sicherlich Hunger haben,
weshalb also soll man ihm nicht zu essen geben, wenn er hier sonst
keine Menschenseele hat?“ sagte Alexandra, die älteste Tochter.
„Und dann ist er ja wie ein Kind, mit ihm kann man noch
Blindekuh spielen.“
„Blindekuh spielen? Wie das?“
„Ach, maman, hören Sie doch auf, sich so zu verstellen, bitte!“
unterbrach Aglaja sie ärgerlich.
Die mittlere, Adelaida, konnte sich nicht bezwingen und brach in
helles Lachen aus.
„Lassen Sie ihn nur herbitten, Papa, maman erlaubt es schon,“
entschied Aglaja.
Der General klingelte und ließ den Fürsten zur Generalin bitten.
„Aber nur unter der Bedingung, daß ihm eine Serviette um den
Hals gebunden wird, sobald er sich an den Tisch setzt,“ sagte die
Generalin. „Ruft Fedor – oder Mawra ... sie soll hinter seinem Stuhl
stehen, wenn er ißt. Ist er wenigstens ruhig, wenn er seine Anfälle
hat? Macht er nicht wilde Gesten?“
„Im Gegenteil, er ist sogar sehr nett erzogen, er hat vorzügliche
Manieren. Mitunter ist er vielleicht etwas gar zu treuherzig ... Ah, da
ist er ja selbst! Bitte, hier, stelle euch vor, meine Damen: Fürst Lew
Nikolajewitsch Myschkin, der Letzte dieses Namens. Ein
Namensvetter von dir, liebe Lisaweta Prokofjewna, und vielleicht
sogar ein Verwandter. Bitte, sich seiner gefälligst anzunehmen.
Sogleich wird das Frühstück aufgetragen, Sie erweisen uns doch die
Ehre, Fürst ... Nun, ich aber, Verzeihung, ich habe mich schon
verspätet, ich muß eilen ...“
„Wir wissen schon, wohin Sie eilen,“ sagte die Generalin
bedeutsam.
„Ich eile, ich eile, mein Freund, habe mich nämlich schon
verspätet! Gebt ihm übrigens eure Albums, mesdames, damit er
euch irgend etwas einschreibt. Ihr ahnt gar nicht, was für ein
Kalligraph er ist – einfach ein Phänomen! Angeborenes Talent! Dort
bei mir hat er mit mittelalterlichen Buchstaben eine Unterschrift
geschrieben: ‚In Demut unterzeichnet dieses Igumen Pafnutij‘ –
großartig! ... Nun, also auf Wiedersehen!“
„Pafnutij? Ein Abt? Warten Sie, aber so warten Sie doch, wohin
gehen Sie denn, was ist das für ein Pafnutij?“ rief die Generalin mit
ärgerlicher Gereiztheit und fast aufgebracht ihrem eilig sich
entfernenden Gatten nach.
„Ja, ja, mein Freund, früher hat es einmal einen solchen Abt
gegeben ... ich muß zum Grafen, er erwartet mich, schon lange, und
die Hauptsache: er hat mich selbst bestellt ... Auf Wiedersehen,
Fürst!“
Und Se. Exzellenz verschwand mit schnellen Schritten.
„Ich weiß schon, zu welchem Grafen er geht!“ bemerkte die
Generalin scharf und wandte gereizt ihren Blick dem Fürsten zu.
„Nun – was war’s doch?“ begann sie gereizt, indem sie sich ärgerlich
des vorhergehenden Gespräches zu erinnern suchte. „Wovon
sprachen wir? Ach, richtig! – nun, was war das für ein Abt?“
„Maman,“ wollte Alexandra sich einmischen, und Aglaja klappte
hörbar mit der Fußspitze auf den Boden.
„Unterbrechen Sie mich nicht, Alexandra Iwanowna,“ wandte sich
die Generalin eisig an ihre Älteste. „Ich will es wissen, was es mit
diesem Abt für eine Bewandtnis hat. Setzen Sie sich hierher, Fürst,
hier auf diesen Sessel mir gegenüber, nein, nein, hierher, mehr ins
Licht, rücken Sie der Sonne näher, damit ich Sie besser sehen kann.
Nun, was ist das für ein Abt?“
„Der Abt Pafnutij,“ antwortete der Fürst mit aufmerksamem und
ernstem Gesicht.
„Pafnutij? Das ist interessant. Nun, und was ist’s mit ihm?“
Die Generalin stellte ihre Fragen ungeduldig, schnell, schroff, ohne
den Blick vom Fürsten abzuwenden, und als dieser antwortete,
nickte sie nach jedem Satz mit dem Kopfe.
„Igumen Pafnutij lebte im vierzehnten Jahrhundert,“ begann der
Fürst, „und stand einem Kloster an der Wolga in unserem jetzigen
Gouvernement Kostroma vor. Er war bekannt wegen seines
gottesfürchtigen Lebens und seiner Reise ins Reich der Goldenen
Horde[6]. Ferner half er, Ordnung und Ruhe in unseren damaligen
Fürstentümern wiederherzustellen. Das Faksimile seiner Unterschrift
auf einer Urkunde kam mir zufällig in die Hände. Seine Schrift gefiel
mir, und ich versuchte sie nachzuahmen. Als Ihr Herr Gemahl nun
sehen wollte, wie ich schreibe, um mir vielleicht eine Anstellung zu
verschaffen, schrieb ich einige Sätze auf ein Blatt Papier, unter
anderem auch ‚In Demut unterzeichnet dieses Igumen Pafnutij‘,
genau so, wie der Abt selbst geschrieben hat. Diese Schriftprobe
gefiel Seiner Exzellenz, und deshalb hat er sie auch erwähnt.“
„Aglaja,“ sagte die Generalin „merk dir: Pafnutij, oder notiere den
Namen, denn sonst vergesse ich ihn. Ich glaubte, daß es
interessanter wäre. Wo ist denn diese Schriftprobe?“
„Sie blieb, glaube ich, auf dem Tisch im Kabinett des Generals.“
„Schickt Fedor hin und laßt sie sofort herholen!“ wandte sich die
Generalin an ihre Töchter.
„Aber ich kann es Ihnen ja nochmals aufschreiben, wenn Sie
wollen.“ –
„Gewiß, maman,“ sagte Alexandra, „jetzt aber täten wir besser, zu
frühstücken; wir sind hungrig.“
„Ja, das können wir,“ entschied die Generalin. „Gehen wir, Fürst!
Bringen Sie auch einen großen Hunger mit?“
„Ja, im Augenblick ist er sogar recht groß. Ich danke Ihnen.“
„Das gefällt mir, daß Sie höflich sind, und ich merke, Sie sind
durchaus nicht so ein ... Sonderling, als den man Sie uns zu
schildern beliebt hat. Nun, gehen wir ... Setzen Sie sich dorthin, mir
gegenüber,“ sagte sie, geschäftig dem Fürsten einen Stuhl
anweisend, als sie ins Frühstückszimmer traten, „ich will Sie sehen.
Alexandra, Adelaida, sorgt dafür, daß der Fürst alles Nötige
bekommt. Nicht wahr, er ist doch gar nicht so ... krank? Vielleicht
ist’s auch gar nicht nötig, ihm die Serviette ... Hat man Ihnen bei
Tisch immer eine Serviette umgebunden, Fürst?“
„Früher, als ich etwa siebenjährig war, allerdings, wie ich mich zu
erinnern glaube; jetzt jedoch lege ich die Serviette gewöhnlich auf
die Knie, wenn ich esse.“
„So macht man’s auch. Aber Ihre Anfälle?“
„Anfälle?“ wunderte sich der Fürst ein wenig. „Im allgemeinen
habe ich meine Anfälle jetzt ziemlich selten. Übrigens, ich weiß nicht:
man sagt, das hiesige Klima würde mir schädlich sein.“
„Er spricht sehr gut,“ bemerkte die Generalin, sich an ihre Töchter
wendend, nachdem sie wieder zu jedem Satz des Fürsten genickt
hatte. „Ich hatte es gar nicht erwartet. Das ist wahrscheinlich alles
nur Erfindung, wie gewöhnlich. Essen Sie, Fürst, und erzählen Sie,
wo Sie geboren, wo Sie erzogen sind. Ich will alles wissen; Sie
interessieren mich sehr.“
Der Fürst dankte und begann, während er mit großem Appetit aß,
zwischendurch alles das zu erzählen, was er an diesem Morgen
schon zweimal über seine Person berichtet hatte. Die Generalin
blickte ihn mit wachsender Zufriedenheit an. Die jungen Mädchen
hörten gleichfalls recht aufmerksam zu. Man kam auf die
Verwandtschaft zu sprechen; es zeigte sich, daß der Fürst seinen
Stammbaum kannte, aber wie sehr sie sich auch mühten, es ließ sich
doch so gut wie gar keine Verwandtschaft zwischen ihnen herstellen.
Ihre Großväter und Großmütter hätten sich vielleicht noch als
entfernte Verwandte betrachten können. Dieses verhältnismäßig
trockene Thema gefiel der Generalin ausnehmend gut, da sie sonst
nie Gelegenheit hatte, von ihrem Stammbaum zu sprechen, und so
war sie sehr guter Laune, als sie sich von der Frühstückstafel erhob.
„So, jetzt wollen wir in unser Versammlungszimmer gehen,“ sagte
sie, „der Kaffee kann dort gereicht werden. Wir haben, müssen Sie
wissen, ein bestimmtes Zimmer, in dem wir uns regelmäßig zu
versammeln pflegen, wenn wir allein sind,“ erzählte sie dem Fürsten,
während sie sich mit ihm dorthin begab. „Es ist im Grunde nichts
anderes, als mein kleiner Salon, in dem sich dann eine jede damit
beschäftigt, wozu sie gerade Lust hat. Alexandra, das ist diese hier,
meine älteste Tochter, spielt Klavier, oder sie liest oder näht.
Adelaida malt Landschaften und Porträts – kann aber leider nichts
beenden. Und Aglaja sitzt und tut nichts. Mir selbst fällt jede Arbeit
aus den Händen: was ich auch beginne, es kommt doch nichts dabei
heraus. Nun, da sind wir. Setzen Sie sich, Fürst, hier, an den Kamin,
und erzählen Sie. Ich will wissen, wie Sie eine Sache zu erzählen
verstehen. Jetzt werde ich mich selbst überzeugen ... Ich will Sie gut
kennen lernen und wenn ich die alte Fürstin Bjelokonskaja
wiedersehe, werde ich ihr von Ihnen erzählen. Ich will, daß Sie auch
alle anderen interessieren. Nun, reden Sie jetzt.“
„Aber, maman, so auf Kommando zu erzählen, ist doch sehr
schwer,“ bemerkte Adelaida, die inzwischen ihre Staffelei
zurechtgerückt hatte, jetzt Pinsel und Palette zur Hand nahm und
sich anschickte, an der längst begonnenen Kopie einer Landschaft zu
malen.
Alexandra und Aglaja setzten sich beide auf ein kleines Sofa und
schienen mit müßig im Schoß ruhenden Händen nichts als zuhören
zu wollen. Dem Fürsten fiel es auf, daß von allen Seiten mit ganz
besonderer, aufmerksamer Erwartung die Blicke auf ihn gerichtet
waren.
„Ich würde nichts erzählen, wenn man mir befehlen wollte,“ sagte
Aglaja.
„Warum nicht? Was ist denn dabei so verwunderlich? Warum sollte
er nicht erzählen? Er ist doch nicht stumm. Ich will wissen, wie er zu
erzählen versteht. Nun, bitte, gleichviel wovon. Erzählen Sie, wie
Ihnen die Schweiz gefallen hat, wie war der erste Eindruck? Ihr
werdet sehen, er wird sogleich beginnen und wird sogar vorzüglich
beginnen.“
„Der Eindruck war groß ...,“ begann der Fürst, wurde jedoch sofort
von der Generalin unterbrochen.
„Seht! Was hab’ ich gesagt?“ wandte sie sich äußerst befriedigt an
ihre Töchter, „da hat er doch begonnen!“
„Aber so lassen Sie ihn doch wenigstens weitererzählen, maman,“
versuchte Alexandra sie aufzuhalten. „Dieser Fürst ist vielleicht sogar
sehr gerieben und nichts weniger als ein Idiot,“ raunte sie
unbemerkt Aglaja zu.
„Zweifellos, das habe ich schon längst bemerkt,“ flüsterte Aglaja
ebenso zurück. „Wie dumm von ihm, sich zu verstellen und eine
solche Rolle zu spielen. Glaubt er etwa, dadurch zu gewinnen?“
„Der erste Eindruck war ungeheuer groß,“ wiederholte der Fürst.
„Als man mich aus Rußland fortbrachte und wir durch verschiedene
deutsche Städte fuhren, sah ich nur schweigend, was an uns
vorüberzog, und ich weiß noch, ich stellte keine einzige Frage. Es
war das nach einer ganzen Reihe von sehr starken und qualvollen
Anfällen meiner Krankheit. Und nach einer solchen Zeit, wenn meine
Krankheit so heftig aufgetreten war und die Anfälle sich mehreremal
wiederholt hatten, verfiel ich regelmäßig in vollkommene geistige
Stumpfheit, verlor ganz und gar mein Gedächtnis, und wenn der
Verstand auch noch arbeitete, so wurde doch die logische
Entwicklung meiner Gedanken gleichsam immer abgeschnitten. Mehr
als zwei oder drei Gedanken vermochte ich nicht nacheinander zu
denken. So scheint es mir wenigstens jetzt. Ließen dagegen die
Anfälle nach, so wurde ich wieder gesund und kräftig, ganz so wie
ich jetzt bin. Ja, ich entsinne mich noch; es war eine unerträgliche
Traurigkeit in mir; ich hätte weinen mögen. Ich wunderte mich nur
und war sehr unruhig. Doch am entsetzlichsten wirkte auf mich, daß
alles um mich herum mir so fremd war; das begriff ich. Diese
Fremdheit vernichtete mich förmlich. Aus diesem Zustande, aus
dieser Dunkelheit, dessen entsinne ich mich noch deutlich, erwachte
ich eines Abends – es war in Basel, als wir in der Schweiz angelangt
waren – und was mich erweckte, war der Schrei eines Esels auf dem
Marktplatz. Dieser Esel frappierte mich ungeheuer: er gefiel mir aus
irgendeinem Grunde über alle Maßen. Und im selben Augenblick
wurde es gleichsam hell in mir und die Dunkelheit verschwand.“
„Ein Esel? Das ist sonderbar,“ meinte die Generalin. „Aber
übrigens; was soll denn Sonderbares dabei sein – manch eine
verliebt sich in einen Esel,“ bemerkte sie mit zornigem Blick auf die
lachenden Töchter. „Auch in der Mythologie gibt es etwas Ähnliches.
Fahren Sie fort, Fürst.“
„Seit der Zeit habe ich die Esel sehr lieb. Ich empfinde geradezu
Sympathie für sie. Ich erkundigte mich sofort nach ihnen – es waren
meine ersten Worte seit langer Zeit. Ich wollte Näheres über sie
hören, denn ich hatte ja noch nie welche gesehn; und so überzeugte
ich mich bald selbst, daß sie überaus nutzbare Tiere sind: arbeitsam,
stark, geduldig, billig, ausdauernd. Durch diesen Esel aber begann
mir von Stund’ an die ganze Schweiz zu gefallen, und so verging
meine frühere Traurigkeit.“
„Das ist alles sehr eigentümlich, aber ich denke, vom Esel
brauchen Sie uns jetzt nichts mehr zu erzählen. Gehen wir auf ein
anderes Thema über. Worüber lachst du die ganze Zeit, Aglaja? Und
du, Alexandra? Der Fürst hat ganz vorzüglich vom Esel erzählt. Er
hat ihn selbst gesehn, was aber hast du gesehn? Du bist noch nie im
Auslande gewesen.“
„Ich habe aber doch schon einen Esel gesehn,“ sagte Adelaida.
„Und ich habe sogar einen gehört! Einen vierbeinigen!“
übertrumpfte sie Aglaja.
Da brachen sie alle drei in Lachen aus und der Fürst lachte mit.
„Das ist aber sehr häßlich von euch,“ bemerkte die Generalin, „Sie
müssen sie schon entschuldigen, Fürst, sie sind im Grunde gute
Mädchen. Ich muß sie ewig schelten, aber ich liebe sie doch. Sie sind
flatterhaft, leichtsinnig und im Augenblick einfach
unzurechnungsfähig.“
„Weshalb denn das?“ fragte der Fürst lachend. „Nur weil sie jetzt
lachen? Oh, auch ich würde die Gelegenheit nicht versäumen. Doch
trotzdem: ich habe den Esel in jeder Gestalt gern. Ein Esel ist immer
ein guter und nützlicher Mensch.“
„Aber Sie selbst, Fürst, sind Sie gut? Ich frage aus Neugier,“ sagte
die Generalin ganz harmlos.
Wieder brachen alle in Lachen aus.
„Ach, das war doch nicht so gemeint! Ihr habt wirklich nichts
anderes als den Esel im Sinn!“ rief die Generalin unwillig aus.
„Glauben Sie mir, Fürst, ich habe es nur so gesagt, ganz
gedankenlos, ohne jede ...“
„Anspielung? Oh, ich glaube es Ihnen, zweifellos!“
Und der Fürst konnte gar nicht mehr aufhören zu lachen.
„Es ist nur gut, daß Sie lachen. Das gefällt mir sehr. Ich sehe, Sie
sind ein guter Mensch,“ sagte die Generalin.
„Mitunter auch kein guter,“ antwortete der Fürst.
„Nun, ich bin immer gut,“ bemerkte die Generalin ganz
unerwartet, „ich bin tatsächlich immer gut, und das ist mein einziger
Fehler; denn man soll nicht immer gut sein. Ich ärgere mich sehr oft
über diese drei hier, zum Beispiel, und über Iwan Fedorowitsch
besonders, doch dumm ist nur, daß ich noch besonders gut bin,
wenn ich mich ärgere. Vorhin, kurz bevor Sie kamen, ärgerte ich
mich wieder und tat, als begriffe ich nichts, und als könnte ich auch
nichts begreifen. Das kommt bei mir so vor, ganz als wäre ich ein
Kind. Aglaja hat mir eine Lektion erteilt, hab’ Dank dafür, Aglaja.
Übrigens, das ist ja doch alles Unsinn. Ich bin noch nicht so dumm,
wie ich scheine und wie mich meine kleinen Töchter machen wollen.
Ich habe Charakter und bin nicht zimperlich. Ich sage das jetzt nur
so, nicht etwa, weil ich ihnen böse bin. Komm her, Aglaja, gib mir
einen Kuß ... Nun, genug der Zärtlichkeit,“ sagte sie, als Aglaja ihr
nach einem Kuß auf den Mund auch noch zärtlich die Hand küßte.
„Fahren Sie fort, Fürst. Vielleicht fällt Ihnen noch etwas
Interessanteres ein als das vom Esel.“
„Ich begreife nicht, wie man so auf Kommando erzählen kann,“
wunderte sich Adelaida, „ich würde es wirklich nicht können.“
„Der Fürst aber kann es, wie du siehst. Das kommt natürlich
daher, weil er intelligent ist und mindestens zehnmal klüger als du,
vielleicht sogar zwölfmal. Ich hoffe, daß du es bald selbst einsiehst.
Beweisen Sie es ihnen, Fürst. Fahren Sie fort. Den Esel kann man,
denke ich, auch in dieser Geschichte beiseite lassen. Nun was haben
Sie denn außer dem Esel im Auslande gesehn?“
„Aber auch das, was der Fürst vom Esel sagte, war interessant,“
bemerkte Alexandra. „Der Fürst hat wirklich fesselnd seinen
krankhaften Zustand geschildert und wie ihm dann alles, durch einen
äußeren Stoß gleichsam, mit völlig unerwarteter Plötzlichkeit in
einem ganz anderen Lichte erschien. Es hat mich immer zu wissen
interessiert, wie es wohl sein mag, wenn man den Verstand verliert
und dann später wieder gesund wird. Besonders wenn es ganz
plötzlich geschieht.“
„Nicht wahr? Nicht wahr?“ fragte die Generalin lebhaft. „Ich sehe,
auch du kannst mitunter klug sein. Nun, genug jetzt gescherzt. Sie
blieben, glaube ich, bei der Schweizer Landschaft stehen, Fürst, –
nun?“
„Wir kamen nach Luzern und man brachte mich über den See. Ich
fühlte seine Schönheit, aber es war mir dabei unsäglich schwer
zumute,“ erzählte der Fürst.
„Warum?“ fragte Alexandra.
„Das weiß ich nicht. Beim ersten Anblick einer solchen Natur ist
mir immer schwer zumute und eine gewisse Unruhe erfaßt mich;
schön ist es und doch – beunruhigend. Aber das war ja alles noch
während der Krankheit.“
„Oh, ich möchte gern einmal die Schweiz sehen!“ sagte Adelaida.
„Wann werden wir endlich einmal ins Ausland reisen? Da sitze ich
nun hier und kann seit zwei ganzen Jahren keinen Vorwurf zu einem
Gemälde finden.
DaFürst,
sehen Sie mich nun alle mit solcher Neugier an,“ begann der
„daß Sie mir womöglich böse sein werden, wenn ich Sie
nicht ganz zufriedenstelle. Doch – das sagte ich ja nur zum Scherz,“
fügte er schnell mit einem Lächeln hinzu.
„Dort ... dort gab es viele Kinder, und ich habe meine ganze Zeit
mit Kindern zugebracht, nur mit Kindern. Das waren die Dorfkinder,
die die Schule besuchten, eine ganze Schar. Ich kann nicht sagen,
daß ich sie gerade unterrichtet hätte, o nein; denn sie hatten ja
einen Schulmeister, Jules Thibaut; ich aber, nun ja – wenn ich sie
auch unterwies, so war ich eigentlich doch nur so mit ihnen
zusammen, und in dieser Weise vergingen die ganzen vier Jahre. Ich
wollte auch nichts anderes. Ich habe ihnen alles erzählt, nichts habe
ich ihnen verheimlicht. Ihre Eltern und Verwandten waren nicht
wenig ungehalten über mich, denn die Kinder konnten zu guter Letzt
gar nicht mehr ohne mich auskommen und saßen den ganzen Tag
bei mir. Der Schulmeister war bald mein erbittertster Feind.
Überhaupt machte ich mir dort viele Feinde, und immer nur wegen
der Kinder. Sogar Schneider machte mir Vorwürfe. Und weshalb nur,
was befürchteten sie denn? Einem Kinde kann man doch alles sagen,
alles! Es hat mich oft stutzig gemacht, wie schlecht Erwachsene
Kinder verstehen, selbst Väter und Mütter ihre eigenen Kinder.
Kindern sollte man nichts verheimlichen, wie man es gewöhnlich
unter dem Vorwande tut, daß sie zu jung seien, und es für sie noch
zu früh sei, etwas zu wissen. Was das doch für eine traurige und
klägliche Auffassung ist! Und wie gut es die Kinder begreifen, daß
die Eltern sie für zu klein und zu dumm zum Verstehen halten,
während sie doch tatsächlich alles verstehen! Die Erwachsenen
wissen nicht, daß ein Kind sogar in der schwierigsten Angelegenheit
einen äußerst guten Rat zu geben vermag. Mein Gott! wenn so ein
Kind mit seinen hellen Augen wie ein kleiner Vogel einen treuherzig
und glücklich ansieht – da muß man sich doch schämen, es zu
belügen! Ich nenne sie deshalb kleine Vögel, weil es etwas
Reizenderes als kleine Vögel nicht gibt. Übrigens hatte mir ein ganz
besonderer Fall die Feindschaft des Dorfes eingetragen ... Thibaut
übrigens war einfach neidisch. Anfangs schüttelte er nur den Kopf
und wunderte sich, wie es zugehen mochte, daß die Kinder bei mir
alles begriffen, bei ihm aber so gut wie überhaupt nichts. Und dann
machte er sich über mich lustig, als ich ihm sagte, daß wir beide sie
in nichts unterrichten könnten, daß im Gegenteil sie uns
unterrichteten. Wie konnte er mich nur beneiden und verleumden,
wenn er doch selbst unter Kindern lebte! Durch Umgang mit Kindern
gesundet die Seele ... Dort in der Anstalt war ein Kranker, den
Professor Schneider behandelte, ein armer Unglücklicher. Sein
Unglück war so groß, daß man es kaum für möglich zu halten
vermag, wie ein Mensch so etwas ertragen kann. Er sollte dort vom
Irrsinn geheilt werden, doch meiner Ansicht nach war er nicht
irrsinnig, sondern litt nur unsäglich – Leiden war seine ganze
Krankheit. Wenn Sie wüßten, was diesem Menschen schließlich
unsere Kinder wurden! ... Doch ich werde Ihnen lieber ein anderes
Mal von diesem Kranken erzählen. Jetzt aber werde ich erzählen, wie
das alles damals begann. Zu Anfang liebten mich die Kinder gar
nicht. Ich war so lang und immer so unbeholfen; ich weiß, daß ich
auch sonst häßlich bin ... und dann war ich auch noch ein Ausländer.
Zuerst lachten sie nur über mich und begannen sogar, mit Steinen
nach mir zu werfen, nachdem sie gesehen hatten, wie ich Marie
küßte. Ich habe sie aber im ganzen nur ein einziges Mal geküßt ...
Nein, lachen Sie nicht,“ unterbrach sich der Fürst, als er das Lächeln
seiner Zuhörerinnen bemerkte, „ich küßte sie nicht, weil ich in sie
etwa verliebt war. Wenn Sie wüßten, was für ein unglückliches
Geschöpf sie war, Sie würden sie ebenso bemitleiden, wie ich es
getan habe. Sie war ein Mädchen aus unserem Dorf. Ihre Mutter war
eine alte, kranke Frau, die in ihrem kleinen, baufälligen Häuschen
hinter dem einen der beiden kleinen Fenster mit Erlaubnis der
Dorfobrigkeit einen Krämerladen eingerichtet hatte. Aus diesem
Fenster verkaufte sie Stiefelschmiere, Garn, Tabak, Seife; lauter
Kleinigkeiten, die wenig einbrachten, und von diesem kleinen
Verdienst lebte sie. Sie war schon lange krank, ihre Füße waren
geschwollen, so daß sie immer auf ein und demselben Fleck saß und
sich nicht rühren konnte. Marie war ihre einzige Tochter, zwanzig
Jahre alt, schwächlich und mager; sie war schon seit längerer Zeit
schwindsüchtig, verrichtete aber trotzdem die schwerste Arbeit als
Tagelöhnerin bei fremden Leuten: sie scheuerte die Fußböden,
wusch Wäsche, fegte die Höfe rein, besorgte das Vieh. Nun geschah
es, daß ein französischer Kommis auf der Durchreise ins Dorf kam,
sie verführte und sie mit sich nahm. Er verließ sie jedoch schon nach
einer Woche und fuhr heimlich davon. Sie machte sich zu Fuß auf
den Heimweg, bettelte sich unterwegs das Notwendigste zusammen,
bis sie dann endlich schmutzig und zerlumpt und mit zerrissenen
Stiefeln wieder im Dorf ankam. Eine ganze Woche war sie
gewandert; genächtigt hatte sie unter freiem Himmel und sich dabei
natürlich erkältet. Ihre Füße und Hände waren wund und
geschwollen. Sie war auch früher nicht hübsch gewesen, nur ihre
Augen waren so still und gut und unschuldig. Auffallend an ihr war
ihre Schweigsamkeit. Früher hatte sie einmal bei der Arbeit zu
singen begonnen, und da hatten alle sie ganz erstaunt angesehen,
bis sie in Lachen ausgebrochen waren: ‚Marie singt! Denkt doch,
Marie singt!‘ Marie aber soll sehr verlegen gewesen sein, und seit
dem Tage hat sie niemand mehr singen hören. Damals war man
noch freundlich zu ihr gewesen; als sie nun aber krank und erschöpft
zurückkehrte, da hatte kein einziger auch nur das geringste Mitleid
für sie übrig! Wie grausam die Menschen doch sind! Was für enge
Begriffe sie haben! Ihre Mutter war die erste, die sie mit bösen
Worten und offener Verachtung empfing. ‚Du hast mich jetzt
entehrt,‘ sagte sie. Und die Mutter gab sie auch als erste der
Schande und den Schmähungen der anderen preis. Als man im Dorf
erfuhr, daß Marie zurückgekehrt war, lief alles hin, um sie zu sehen:
fast das ganze Dorf versammelte sich in der Hütte der Alten –
Greise, Kinder, Weiber, Mädchen, alle eilten neugierig herbei. Marie
kniete zu Füßen der Mutter, hungrig und zerlumpt, und schluchzte.
Als nun die Menschen sich so in die Stube drängten, um die
Sünderin zu betrachten, verbarg Marie ihr Gesicht im aufgelösten
Haar und warf sich in ihrer Verzweiflung auf den Fußboden, wo sie
schluchzend liegen blieb. Alle, die sie rings umstanden, blickten auf
sie herab, als wäre sie irgendein Geschmeiß gewesen. Die Männer
verurteilten sie schonungslos, die jüngeren lachten und machten sich
über sie lustig, am meisten aber schalten die Weiber, die sie wie eine
scheußliche Spinne oder etwas noch Ekelhafteres behandelten. Und
die Mutter ließ das zu, saß dabei, nickte mit dem Kopf und fand es
ganz in der Ordnung. Die Alte war damals von den Ärzten bereits
aufgegeben. Nach zwei Monaten starb sie denn auch. Sie wußte,
daß ihre Tage gezählt waren, aber sie söhnte sich nicht mit der
Tochter aus, ließ sie im kalten Vorhaus schlafen und gab ihr kaum
etwas zu essen. Die kranken Füße der Alten mußten alle paar
Stunden in warmes Wasser gesetzt werden, was Marie denn auch
pünktlich und sorgsam tat. Sie wusch ihr die Füße und pflegte sie
überhaupt aufopfernd. Die Alte aber nahm alle Dienste der Tochter
als etwas Selbstverständliches hin und sagte ihr nicht einmal ein
freundliches Wort. Marie ertrug alles, und wie ich später bei näherer
Bekanntschaft sah, empfand sie diese Behandlung von seiten der
Mutter als vollkommen gerecht und hielt sich selbst für die
Verworfenste aller Verworfenen. Als man dann die Alte in ihren
letzten Wochen zu Bett hatte legen müssen, kamen die Dorfweiber
abwechselnd zu ihr, um sie zu pflegen, wie es dort Sitte ist. Nun
bekam Marie überhaupt nichts mehr zu essen; im ganzen Dorf
wurde sie verfolgt, und man wollte ihr nicht einmal Arbeit geben wie
früher. Alle spien hinter ihr her, und die Männer betrachteten sie
wohl überhaupt nicht mehr als ein Weib – solche Schändlichkeiten
sagten sie ihr. Nur sehr selten, wenn sie sich betranken, Sonntags
gewöhnlich, warfen sie ihr in der Trunkenheit zum Spott ein
Kupferstück hin, so – einfach auf die Erde, und Marie hob es
schweigend auf. Sie hustete damals bereits sehr stark und begann
Blut zu speien. Schließlich hingen ihre Kleider nur noch wie Lumpen
an ihrem Körper, so daß sie sich schämte, sich im Dorf zu zeigen.
War sie doch seit ihrer Rückkehr immer nur barfuß gegangen! Da
begannen denn besonders die Kinder – es waren ihrer dort eine
ganze Schar, mindestens vierzig Schulrangen – ja, besonders die
Kinder begannen, sie zu necken und ihr mit Straßenschmutz
nachzuwerfen. Sie bat den Hirten, daß er ihr erlauben möge, seine
Kühe zu hüten, aber der Hirt jagte sie davon. Sie jedoch nahm eine
Gelegenheit wahr und zog ohne seine Erlaubnis mit der Herde
hinaus und blieb den ganzen Tag fort, worauf der Hirt einsah, daß
sie ihm großen Nutzen bringen konnte, und sie nicht mehr fortjagte
und ihr bisweilen sogar die Überreste seiner Mahlzeit gab, etwas
Käse und Brot. Das hielt er natürlich für eine große Gnade. Als ihre
Mutter endlich gestorben war und beerdigt wurde, schämte sich der
Pastor nicht, sie öffentlich zu schmähen, und er tat das noch dazu in
der Kirche. Marie stand in ihren Lumpen hinter dem Sarge und
weinte. Viel Volks hatte sich versammelt, um zu sehen, wie sie
weinen und hinter dem Sarge hergehen würde. Da hub der Pastor
an – er war ein noch junger Mensch, der den Ehrgeiz hatte, ein
großer Redner zu werden – wandte sich an alle Anwesenden und
wies auf Marie. ‚Seht, dort steht sie, die die Schuld am Tode dieser
alten Frau trägt,‘ begann er – es war gar nicht wahr, denn die Alte
war doch ganze zwei Jahre lang krank gewesen – ‚seht, da steht sie
nun vor euch und wagt nicht, den Blick zu erheben; denn der Zorn
des Herrn ruht auf ihr! Da steht sie barfuß und in Lumpen – ein
Beispiel aus der Schar jener, die den Pfad der Tugend verlassen! Und
wer ist sie? Wer ist sie, die diese fromme Frau ins Grab gebracht?
Sie ist ihre – Tochter!‘ – und so weiter, immer in demselben Ton. Und
können Sie sich so etwas denken: diese Gemeinheit gefiel allen!
Doch ... da kam etwas anderes dazwischen: die Kinder traten für sie
ein; denn damals waren sie bereits alle auf meiner Seite und hatten
Marie gern. Das war folgendermaßen geschehen: Ich wollte etwas
für Marie tun, man mußte ihr Geld verschaffen, denn sie hatte es
sehr nötig. Ich besaß aber – dort, bei Schneider – nie Geld. Dafür
hatte ich eine kleine Krawattennadel mit einem Brillanten, die
verkaufte ich an einen Aufkäufer alter Sachen; es war dort gerade
einer, der von Dorf zu Dorf fuhr und mit alten Kleidern handelte. Er
gab mir acht Franken, während die Nadel wenigstens vierzig wert
war. Darauf bemühte ich mich lange Zeit vergeblich, Marie einmal
allein zu treffen. Endlich gelang es mir: wir begegneten uns hinter
dem Dorf auf einem einsamen Fußsteig, der auf die Berge
hinaufführte, gerade hinter einem Baum. Ich gab ihr die acht
Franken und sagte ihr, daß sie sparsam mit ihnen umgehen müsse;
denn mehr Geld hätte ich nicht, und dann küßte ich sie und sagte,
sie solle nicht denken, daß ich irgendeine schlechte Absicht hätte,
daß ich sie nicht deshalb geküßt, weil ich etwa in sie verliebt sei,
sondern nur, weil sie mir sehr leid täte und ich sie niemals für
schuldig, sondern nur für sehr unglücklich halten würde. Ich wollte
sie gern noch etwas trösten und ihr klarmachen, daß sie sich doch
nicht für so tief unter den anderen stehend zu halten brauche; aber
ich sah es ihr an, daß sie mich nicht verstand, obschon sie kein Wort
sagte, mit gesenktem Blick vor mir stand und sich entsetzlich
schämte. Als ich geendet hatte, beugte sie sich plötzlich nieder und
küßte mir die Hand, worauf ich sofort ihre Hand nahm, um sie
gleichfalls zu küssen, doch sie zog sie erschrocken zurück. Da
tauchten plötzlich die Kinder auf, eine ganze Schar. Wie ich später
erfuhr, hatten sie mich beobachtet und waren mir sogar heimlich
gefolgt. Kaum hatten sie uns erblickt, als sie auch schon in ein
Hohngelächter ausbrachen, pfiffen, schrien und in die Hände
klatschten. Marie lief natürlich fort, so schnell sie nur konnte. Ich
wollte zu den Kindern reden, aber sie warfen mit Steinen nach mir.
Noch am selben Abend wußte es das ganze Dorf, und Marie mußte
dafür büßen: sie wurde noch mehr verfolgt und gehaßt. Wie ich
hörte, wollte man sie sogar gerichtlich zu einer Strafe verurteilen
lassen, doch zum Glück kam es nicht so weit. Dafür aber ließen die
Kinder sie keinen Augenblick mehr in Ruhe: sie schalten sie mit
häßlichen Worten, warfen ihr Schmutz nach, trieben sie fort, und sie
mußte mit ihrer schwachen Brust laufen, keuchend, atemlos, die
Kinder mit Geschrei hinter ihr her. Einmal trat ich der Schar entgegen
und prügelte mich sogar mit den Jungen. Dann begann ich mit ihnen
zu reden. Und so redete ich jeden Tag, wenn sich nur Gelegenheit
dazu bot. Bisweilen blieben sie dann stehen und hörten zu, wenn sie
auch das Schelten noch nicht ließen. Ich erzählte ihnen, wie
unglücklich Marie sei, und bald hörten sie auf, sie zu verfolgen und
gingen nur schweigend fort, wenn sie kam. Mit der Zeit begannen
sie auch mit mir zu sprechen, und wir unterhielten uns; ich
verheimlichte ihnen nichts, ich erzählte ihnen alles. Sie hörten mir
sehr neugierig zu und bald empfanden auch sie Mitleid mit Marie.
Einzelne von ihnen gingen sogar so weit, daß sie sie jetzt freundlich
grüßten, wenn sie ihr begegneten. Es ist dort Sitte, daß einander
Begegnende, gleichviel ob sie sich kennen oder nicht, ‚Grüß Gott‘
sagen. Ich kann mir denken, wie erstaunt Marie anfangs gewesen
sein muß. Einmal hatten zwei kleine Mädchen sich irgendwoher
Essen verschafft, und kamen dann zu mir, um es mir zu erzählen. Sie
sagten, Marie habe angefangen zu weinen, und sie hätten sie jetzt
sehr lieb. Es dauerte nicht lange, und sie wurde von allen geliebt,
und durch sie gewannen die Kinder auch mich plötzlich lieb. Von der
Zeit an kamen sie oft zu mir und baten mich, ihnen zu erzählen. Ich
glaube, ich habe nicht schlecht erzählt, denn sie hörten mir sehr
gern zu. Späterhin lernte und las ich nur zu dem Zweck, um ihnen
dann das Gelesene erzählen zu können, und so habe ich ihnen ganze
drei Jahre lang erzählt. Als mich dann später alle, selbst Schneider
nicht ausgenommen, verurteilten, weil ich mit ihnen wie mit
Erwachsenen redete und ihnen nichts verheimlichte, sagte ich, daß
man sich schämen müßte, Kinder zu belügen, daß sie ja sowieso
alles wüßten, wie sehr man es auch vor ihnen geheimhalten wollte.
Wenn sie all das dann aber im Leben erfahren würden, dann würden
sie es als etwas Schmutziges erfahren, von mir aber erführen sie es
als etwas Reines. Es sollte, meinte ich, doch ein jeder nur daran
denken, wie es gewesen war, als er selbst noch ein Kind war. Die
Menschen waren aber anderer Meinung ... Daß ich Marie geküßt
hatte, war ungefähr zwei Wochen vor dem Tode ihrer Mutter
gewesen, so daß die Kinder, als der Pastor die Beerdigungsrede hielt,
schon alle auf meiner Seite waren. Ich erklärte ihnen unverzüglich
die ganze Schändlichkeit dieser Rede, und sie wurden alle böse auf
ihn, einige sogar in dem Maße, daß sie mit Steinen seine
Fensterscheiben einwarfen. Ich verbot es ihnen natürlich, denn das
ging doch nicht an; aber im Dorf hatte man schon den ganzen
Zusammenhang erfahren, und alle beschuldigten mich, daß ich die
Kinder verderbe. Gleichzeitig erfuhren sie auch den Grund: daß die
Kinder Marie liebten – und sie erschraken unsäglich. Marie aber war
glücklich. Den Kindern wurde strengstens verboten, mit ihr
zusammenzukommen. Da liefen sie denn heimlich fort und stahlen
sich auf Umwegen zur Herde, die sie hütete. Es war ziemlich weit –
Welcome to our website – the ideal destination for book lovers and
knowledge seekers. With a mission to inspire endlessly, we offer a
vast collection of books, ranging from classic literary works to
specialized publications, self-development books, and children's
literature. Each book is a new journey of discovery, expanding
knowledge and enriching the soul of the reade
Our website is not just a platform for buying books, but a bridge
connecting readers to the timeless values of culture and wisdom. With
an elegant, user-friendly interface and an intelligent search system,
we are committed to providing a quick and convenient shopping
experience. Additionally, our special promotions and home delivery
services ensure that you save time and fully enjoy the joy of reading.
ebookgate.com