user10259: Title says it all. Would one private key enable you to recover all the addresses in your wallet? Or does a wallet just contain a series of key-pairs?

user9790: There's two types of wallet. A conventional wallet is just a collection of random keys, Bitcoin-QT and Multibit fit into this category. A Hierarchical Deterministic like Electrum or Armory generate all the keys in the wallet from a single key, so that one backup is permanently associated with a wallet no mater how many new addresses and change addresses are used. 
https://en.bitcoin.it/wiki/BIP_0032

user6767: There are three main types of wallets:

non-deterministic (random) wallets
sequential deterministic wallets
hierarchical deterministic wallets

With a non-deterministic (random) wallet, all the private/public keypairs are generated randomly. The wallet may generate 100 random private keys as soon as it is initialized, for example.
With a sequential deterministic wallet, a passphrase or sequence of characters is randomly generated to act as a seed. It is then repeatedly incremented and hashed to generate new private keys.
With a hierarchical deterministic wallet, a single keypair is created initially and is known as the master keypair. This master keypair is used to generate child keypairs (remarkably, new bitcoin addresses can be generated using just the public key).
Here's a more in-depth explanation: What is a deterministic wallet?
Also, here's my python implementation of a sequential deterministic wallet. And here's a good example of a hierarchical deterministic wallet.

10259: <p>Title says it all. Would one private key enable you to recover all the addresses in your wallet? Or does a wallet just contain a series of key-pairs?</p>
 9790: <p>There's two types of wallet. A conventional wallet is just a collection of random keys, Bitcoin-QT and Multibit fit into this category. A Hierarchical Deterministic like Electrum or Armory generate all the keys in the wallet from a single key, so that one backup is permanently associated with a wallet no mater how many new addresses and change addresses are used. </p>

<p><a href="https://en.bitcoin.it/wiki/BIP_0032">https://en.bitcoin.it/wiki/BIP_0032</a></p>
 6767: <p>There are three main types of wallets:</p>

<ol>
<li>non-deterministic (random) wallets</li>
<li>sequential deterministic wallets</li>
<li>hierarchical deterministic wallets</li>
</ol>

<p>With a non-deterministic (random) wallet, all the private/public keypairs are generated randomly. The wallet may generate 100 random private keys as soon as it is initialized, for example.</p>

<p>With a sequential deterministic wallet, a passphrase or sequence of characters is randomly generated to act as a seed. It is then repeatedly incremented and hashed to generate new private keys.</p>

<p>With a hierarchical deterministic wallet, a single keypair is created initially and is known as the master keypair. This master keypair is used to generate child keypairs (remarkably, new bitcoin addresses can be generated using just the public key).</p>

<p>Here's a more in-depth explanation: <a href="https://bitcoin.stackexchange.com/questions/718/what-is-a-deterministic-wallet/21200#21200">What is a deterministic wallet?</a></p>

<p>Also, here's <a href="https://github.com/blockstack/pybitcoin/blob/master/pybitcoin/wallet.py" rel="nofollow noreferrer">my python implementation of a sequential deterministic wallet</a>. And here's a <a href="https://github.com/blockstack/keychain-manager-py" rel="nofollow noreferrer">good example of a hierarchical deterministic wallet</a>.</p>
