In B-trees, internal (non-leaf) nodes can have a variable number of child nodes within some pre-defined range. When data is inserted or removed from a node, its number of child nodes changes. In order to maintain the pre-defined range, internal nodes may be joined or split. Because a range of child nodes is permitted, B-trees do not need re-balancing as frequently as other self-balancing search trees, but may waste some space, since nodes are not entirely full. The lower and upper bounds on the number of child nodes are typically fixed for a particular implementation. For example, in a 2-3 B-tree (often simply referred to as a 2-3 tree), each internal node may have only 2 or 3 child nodes.
Each internal node of a B-tree will contain a number of keys. Usually, the number of keys is chosen to vary between and . In practice, the keys take up the most space in a node. The factor of 2 will guarantee that nodes can be split or combined. If an internal node has keys, then adding a key to that node can be accomplished by splitting the key node into two key nodes and adding the key to the parent node. Each split node has the required minimum number of keys. Similarly, if an internal node and its neighbor each have keys, then a key may be deleted from the internal node by combining with its neighbor. Deleting the key would make the internal node have keys; joining the neighbor would add keys plus one more key brought down from the neighbor's parent. The result is an entirely full node of keys.
The number of branches (or child nodes) from a node will be one more than the number of keys stored in the node. In a 2-3 B-tree, the internal nodes will store either one key (with two child nodes) or two keys (with three child nodes). A B-tree is sometimes described with the parameters — or simply with the highest branching order, .
A B-tree is kept balanced by requiring that all leaf nodes are at the same depth. This depth will increase slowly as elements are added to the tree, but an increase in the overall depth is infrequent, and results in all leaf nodes being one more node further away from the root.
B-trees have substantial advantages over alternative implementations when node access times far exceed access times within nodes. This usually occurs when the nodes are in secondary storage such as disk drives. By maximizing the number of child nodes within each internal node, the height of the tree decreases and the number of expensive node accesses is reduced. In addition, rebalancing the tree occurs less often. The maximum number of child nodes depends on the information that must be stored for each child node and the size of a full disk block or an analogous size in secondary storage. While 2-3 B-trees are easier to explain, practical B-trees using secondary storage want a large number of child nodes to improve performance.
Variants
The term B-tree may refer to a specific design or it may refer to a general class of designs. In the narrow sense, a B-tree stores keys in its internal nodes but need not store those keys in the records at the leaves. The general class includes variations such as the B+-tree and the B*-tree.
In the B+-tree, copies of the keys are stored in the internal nodes; the keys and records are stored in leaves; in addition, a leaf node may include a pointer to the next leaf node to speed sequential access.
The B*-tree balances more neighboring internal nodes to keep the internal nodes more densely packed. For example, a non-root node of a B-tree must be only half full, but a non-root node of a B*-tree must be two-thirds full.
Counted B-trees store, with each pointer within the tree, the number of nodes in the subtree below that pointer. This allows rapid searches for the Nth record in key order, or counting the number of records between any two records, and various other related operations.
Etymology unknown
Rudolf Bayer and Ed McCreight invented the B-tree while working at Boeing Research Labs in 1971 , but they did not explain what, if anything, the B stands for. Douglas Comer explains:
:The origin of "B-tree" has never been explained by the authors. As we shall see, "balanced," "broad," or "bushy" might apply. Others suggest that the "B" stands for Boeing. Because of his contributions, however, it seems appropriate to think of B-trees as "Bayer"-trees.
The database problem
Time to search a sorted file
Usually, sorting and searching algorithms have been characterized by the number of comparison operations that must be performed using order notation. A binary search of a sorted table with records, for example, can be done in comparisons. If the table had 1,000,000 records, then a specific record could be located with about 20 comparisons: .
Large databases have historically been kept on disk drives. The time to read a record on a disk drive can dominate the time needed to compare keys once the record is available. The time to read a record from a disk drive involves a seek time and a rotational delay. The seek time may be 0 to 20 or more milliseconds, and the rotational delay averages about half the rotation period. For a 7200 RPM drive, the rotation period is 8.33 milliseconds. For a drive such as the Seagate ST3500320NS, the track-to-track seek time is 0.8 milliseconds and the average reading seek time is 8.5 milliseconds. For simplicity, assume reading from disk takes about 10 milliseconds.
Naively, then, the time to locate one record out of a million would take 20 disk reads times 10 milliseconds per disk read, which is 0.2 second.
The time won't be that bad because individual records are grouped together in a disk block. A disk block might be 16 kilobytes. If each record is 160 bytes, then 100 records could be stored in each block. The disk read time above was actually for an entire block. Once the disk head is in position, one or more disk blocks can be read with little delay. With 100 records per block, the last 6 or so comparisons don't need to do any disk reads—the comparisons are all within the last disk block read.
To speed the search further, the first 13 to 14 comparisons (which each required a disk access) must be sped up.
An index speeds the search
A significant improvement can be made with an index. In the example above, initial disk reads narrowed the search range by a factor of two. That can be improved substantially by creating an auxiliary index that contains the first record in each disk block (sometimes called a sparse index). This auxiliary index would be 1% of the size of the original database, but it can be searched more quickly. Finding an entry in the auxiliary index would tell us which block to search in the main database; after searching the auxiliary index, we would have to search only that one block of the main database—at a cost of one more disk read. The index would hold 10,000 entries, so it would take at most 14 comparisons. Like the main database, the last 6 or so comparisons in the aux index would be on the same disk block. The index could be searched in about 8 disk reads, and the desired record could be accessed in 9 disk reads.
The trick of creating an auxiliary index can be repeated to make an auxiliary index to the auxiliary index. That would make an aux-aux index that would need only 100 entries and would fit in one disk block.
Instead of reading 14 disk blocks to find the desired record, we only need to read 3 blocks. Reading and searching the first (and only) block of the aux-aux index identifies the relevant block in aux-index. Reading and searching that aux-index block identifies the relevant block in the main database. Instead of 150 milliseconds, we need only 30 milliseconds to get the record.
The auxiliary indices have turned the search problem from a binary search requiring roughly disk reads to one requiring only disk reads where is the blocking factor (the number of entries per block: entries per block; reads).
In practice, if the main database is being frequently searched, the aux-aux index and much of the aux index may reside in a disk cache, so they would not incur a disk read.
Insertions and deletions cause trouble
If the database does not change, then compiling the index is simple to do, and the index need never be changed. If there are changes, then managing the database and its index becomes more complicated.
Deleting records from a database doesn't cause much trouble. The index can stay the same, and the record can just be marked as deleted. The database stays in sorted order. If there are a lot of deletions, then the searching and storage become less efficient.
Insertions are a disaster in a sorted sequential file because room for the inserted record must be made. Inserting a record before the first record in the file requires shifting all of the records down one. Such an operation is just too expensive to be practical.
A trick is to leave some space lying around to be used for insertions. Instead of densely storing all the records in a block, the block can have some free space to allow for subsequent insertions. Those records would be marked as if they were "deleted" records.
Now, both insertions and deletions are fast as long as space is available on a block. If an insertion won't fit on the block, then some free space on some nearby block must be found and the auxiliary indices adjusted. The hope is enough space is nearby that a lot of blocks do not need to be reorganized. Alternatively, some out-of-sequence disk blocks may be used.
The B-tree uses all those ideas
The B-tree uses all the above ideas. It keeps the records in sorted order so they may be sequentially traversed. It uses a hierarchical index to minimize the number of disk reads. The index is elegantly adjusted with a recursive algorithm. The B-tree uses partially full blocks to speed insertions and deletions. In addition, a B-tree minimizes waste by making sure the interior nodes are at least 1/2 full. A B-tree can handle an arbitrary number of insertions and deletions.
Technical description
Terminology
The terminology used for B-trees is inconsistent in the literature:
:Unfortunately, the literature on B-trees is not uniform in its use of terms relating to B-Trees.
, , and others define the order of B-tree as the minimum number of keys in a non-root node. points out that terminology is ambiguous because the maximum number of keys is not clear. An order 3 B-tree might hold a maximum of 6 keys or a maximum of 7 keys. avoids the problem by defining the order to be maximum number of children (which is one more than the maximum number of keys).
The term leaf is also inconsistent. considered the leaf level to be the lowest level of keys, but considered the leaf level to be one level below the lowest keys. There are many possible implementation choices. In some designs, the leaves may hold the entire data record; in other designs, the leaves may only hold pointers to the data record. Those choices are not fundamental to the idea of a B-tree.
There are also unfortunate choices like using the variable to represent the number of children when could be confused with the number of keys.
For simplicity, most authors assume there are a fixed number of keys that fit in a node. The basic assumption is the key size is fixed and the node size is fixed. In practice, variable length keys may be employed.
Definition
A B-tree of order m (the maximum number of children for each node) is a tree which satisfies the following properties:
# Every node has at most m children.
# Every node (except root) has at least children.
# The root has at least two children if it is not a leaf node.
# All leaves appear in the same level, and carry information.
# A non-leaf node with k children contains k−1 keys.
Each internal node's elements act as separation values which divide its subtrees. For example, if an internal node has three child nodes (or subtrees) then it must have two separation values or elements a1 and a2. All values in the leftmost subtree will be less than a1 , all values in the middle subtree will be between a1 and a2, and all values in the rightmost subtree will be greater than a2.
Internal nodes in a B-tree – nodes which are not leaf nodes – are usually represented as an ordered set of elements and child pointers. Every internal node contains a maximum of U children and – other than the root – a minimum of L children. For all internal nodes other than the root, the number of elements is one less than the number of child pointers; the number of elements is between L−1 and U−1. The number U must be either 2L or 2L−1; thus each internal node is at least half full. This relationship between U and L implies that two half-full nodes can be joined to make a legal node, and one full node can be split into two legal nodes (if there is room to push one element up into the parent). These properties make it possible to delete and insert new values into a B-tree and adjust the tree to preserve the B-tree properties.
Leaf nodes have the same restriction on the number of elements, but have no children, and no child pointers.
The root node still has the upper limit on the number of children, but has no lower limit. For example, when there are fewer than L−1 elements in the entire tree, the root will be the only node in the tree, and it will have no children at all.
A B-tree of depth n+1 can hold about U times as many items as a B-tree of depth n, but the cost of search, insert, and delete operations grows with the depth of the tree. As with any balanced tree, the cost grows much more slowly than the number of elements.
Some balanced trees store values only at the leaf nodes, and so have different kinds of nodes for leaf nodes and internal nodes. B-trees keep values in every node in the tree, and may use the same structure for all nodes. However, since leaf nodes never have children, a specialized structure for leaf nodes in B-trees will improve performance.
Best case and worst case heights
The best case height of a B-Tree is:
:
The worst case height of a B-Tree is:
:
where is the maximum number of children a node can have.
Algorithms
Warning: the discussion below uses "element", "value", "key", "separator", and "separation value" to mean essentially the same thing. The terms are not clearly defined. There are some subtle issues at the root and leaves.
Search
Searching is similar to searching a binary search tree. Starting at the root, the tree is recursively traversed from top to bottom. At each level, the search chooses the child pointer (subtree) whose separation values are on either side of the search value.
Binary search is typically (but not necessarily) used within nodes to find the separation values and child tree of interest.
Insertion
All insertions start at a leaf node. To insert a new element
Search the tree to find the leaf node where the new element should be added. Insert the new element into that node with the following steps:
# If the node contains fewer than the maximum legal number of elements, then there is room for the new element. Insert the new element in the node, keeping the node's elements ordered.
# Otherwise the node is full, so evenly split it into two nodes.
## A single median is chosen from among the leaf's elements and the new element.
## Values less than the median are put in the new left node and values greater than the median are put in the new right node, with the median acting as a separation value.
## Insert the separation value in the node's parent, which may cause it to be split, and so on. If the node has no parent (i.e., the node was the root), create a new root above this node (increasing the height of the tree).
If the splitting goes all the way up to the root, it creates a new root with a single separator value and two children, which is why the lower bound on the size of internal nodes does not apply to the root. The maximum number of elements per node is U−1. When a node is split, one element moves to the parent, but one element is added. So, it must be possible to divide the maximum number U−1 of elements into two legal nodes. If this number is odd, then U=2L and one of the new nodes contains (U−2)/2 = L−1 elements, and hence is a legal node, and the other contains one more element, and hence it is legal too. If U−1 is even, then U=2L−1, so there are 2L−2 elements in the node. Half of this number is L−1, which is the minimum number of elements allowed per node.
An improved algorithm supports a single pass down the tree from the root to the node where the insertion will take place, splitting any full nodes encountered on the way. This prevents the need to recall the parent nodes into memory, which may be expensive if the nodes are on secondary storage. However, to use this improved algorithm, we must be able to send one element to the parent and split the remaining U−2 elements into two legal nodes, without adding a new element. This requires U = 2L rather than U = 2L−1, which accounts for why some textbooks impose this requirement in defining B-trees.
Deletion
There are two popular strategies for deletion from a B-Tree.
* locate and delete the item, then restructure the tree to regain its invariants
or
do a single pass down the tree, but before entering (visiting) a node, restructure the tree so that once the key to be deleted is encountered, it can be deleted without triggering the need for any further restructuring
The algorithm below uses the former strategy.
There are two special cases to consider when deleting an element:
# the element in an internal node may be a separator for its child nodes
# deleting an element may put its node under the minimum number of elements and children.
Each of these cases will be dealt with in order.
Deletion from a leaf node
Search for the value to delete.
If the value is in a leaf node, it can simply be deleted from the node,
If underflow happens, check siblings to either transfer a key or fuse the siblings together.
if deletion happened from right child retrieve the max value of left child if there is no underflow in left child
in vice-versa situation retrieve the min element from right
Deletion from an internal node
Each element in an internal node acts as a separation value for two subtrees, and when such an element is deleted, two cases arise. In the first case, both of the two child nodes to the left and right of the deleted element have the minimum number of elements, namely L−1. They can then be joined into a single node with 2L−2 elements, a number which does not exceed U−1 and so is a legal node. Unless it is known that this particular B-tree does not contain duplicate data, we must then also (recursively) delete the element in question from the new node.
In the second case, one of the two child nodes contains more than the minimum number of elements. Then a new separator for those subtrees must be found. Note that the largest element in the left subtree is still less than the separator. Likewise, the smallest element in the right subtree is the smallest element which is still greater than the separator. Both of those elements are in leaf nodes, and either can be the new separator for the two subtrees.
* If the value is in an internal node, choose a new separator (either the largest element in the left subtree or the smallest element in the right subtree), remove it from the leaf node it is in, and replace the element to be deleted with the new separator.
This has deleted an element from a leaf node, and so is now equivalent to the previous case.
Rebalancing after deletion
If deleting an element from a leaf node has brought it under the minimum size, some elements must be redistributed to bring all nodes up to the minimum. In some cases the rearrangement will move the deficiency to the parent, and the redistribution must be applied iteratively up the tree, perhaps even to the root. Since the minimum element count doesn't apply to the root, making the root be the only deficient node is not a problem. The algorithm to rebalance the tree is as follows:
* If the right sibling has more than the minimum number of elements
* Add the separator to the end of the deficient node.
* Replace the separator in the parent with the first element of the right sibling.
* Append the first child of the right sibling as the last child of the deficient node
Otherwise, if the left sibling has more than the minimum number of elements.
* Add the separator to the start of the deficient node.
* Replace the separator in the parent with the last element of the left sibling.
* Insert the last child of the left sibling as the first child of the deficient node
If both immediate siblings have only the minimum number of elements
* Create a new node with all the elements from the deficient node, all the elements from one of its siblings, and the separator in the parent between the two combined sibling nodes.
* Remove the separator from the parent, and replace the two children it separated with the combined node.
* If that brings the number of elements in the parent under the minimum, repeat these steps with that deficient node, unless it is the root, since the root is permitted to be deficient.
The only other case to account for is when the root has no elements and one child. In this case it is sufficient to replace it with its only child.
Initial construction
In applications, it is frequently useful to build a B-tree to represent a large existing collection of data and then update it incrementally using standard B-tree operations. In this case, the most efficient way to construct the initial B-tree is not to insert every element in the initial collection successively, but instead to construct the initial set of leaf nodes directly from the input, then build the internal nodes from these. This approach to B-tree construction is called bulkloading. Initially, every leaf but the last one has one extra element, which will be used to build the internal nodes.
For example, if the leaf nodes have maximum size 4 and the initial collection is the integers 1 through 24, we would initially construct 4 leaf nodes containing 5 values each and 1 which contains 4 values:
{|class="wikitable"
|1||2||3||4||5
|}
{|class="wikitable"
|6||7||8||9||10
|}
{|class="wikitable"
|11||12||13||14||15
|}
{|class="wikitable"
|16||17||18||19||20
|}
{|class="wikitable"
|21||22||23||24
|}
We build the next level up from the leaves by taking the last element from each leaf node except the last one. Again, each node except the last will contain one extra value. In the example, suppose the internal nodes contain at most 2 values (3 child pointers). Then the next level up of internal nodes would be:
{|class="wikitable"
|5||10||15
|}
{|class="wikitable"
|20
|}
{|class="wikitable"
|1||2||3||4
|}
{|class="wikitable"
|6||7||8||9
|}
{|class="wikitable"
|11||12||13||14
|}
{|class="wikitable"
|16||17||18||19
|}
{|class="wikitable"
|21||22||23||24
|}
This process is continued until we reach a level with only one node and it is not overfilled. In the example only the root level remains:
{|class="wikitable"
|15
|}
{|class="wikitable"
|5||10
|}
{|class="wikitable"
|20
|}
{|class="wikitable"
|1||2||3||4
|}
{|class="wikitable"
|6||7||8||9
|}
{|class="wikitable"
|11||12||13||14
|}
{|class="wikitable"
|16||17||18||19
|}
{|class="wikitable"
|21||22||23||24
|}
B-trees in filesystems
In addition to its use in databases, the B-tree is also used in filesystems to allow quick random access to an arbitrary block in a particular file. The basic problem is turning the file block address into a disk block (or perhaps to a cylinder-head-sector) address.
Some operating systems require the user to allocate the maximum size of the file when the file is created. The file can then be allocated as contiguous disk blocks. Converting to a disk block: the operating system just adds the file block address to the starting disk block of the file. The scheme is simple, but the file cannot exceed its created size.
Other operating systems allow a file to grow. The resulting disk blocks may not be contiguous, so mapping logical blocks to physical blocks is more involved.
MS/DOS, for example, used a simple (FAT). The FAT has an entry for each disk block, and that entry identifies whether its block is used by a file and if so, which block (if any) is the next disk block of the same file. So, the allocation of each file is represented as a linked list in the table. In order to find the disk address of file block , the operating system (or disk utility) must sequentially follow the file's linked list in the FAT. Worse, to find a free disk block, it must sequentially scan the FAT. For MS/DOS, that was not a huge penalty because the disks and files were small and the FAT had few entries and relatively short file chains. In the FAT12 filesystem (used on floppy disks and early hard disks), there were no more than 4,080 entries, and the FAT would usually be resident in memory. As disks got bigger, the FAT architecture began to confront penalties. On a large disk using FAT, it may be necessary to perform disk reads to learn the disk location of a file block to be read or written.
TOPS-20 (and possibly TENEX) used a 0 to 2 level tree that has similarities to a B-Tree. A disk block was 512 36-bit words. If the file fit in a 512 () word block, then the file directory would point to that physical disk block. If the file fit in words, then the directory would point to an aux index; the 512 words of that index would either be NULL (the block isn't allocated) or point to the physical address of the block. If the file fit in words, then the directory would point to a block holding an aux-aux index; each entry would either be NULL or point to an aux index. Consequently, the physical disk block for a word file could be located in two disk reads and read on the third.
Apple's filesystem HFS+, Microsoft's NTFS and some Linux filesystems, such as btrfs and Ext4, use B-trees.
Variations
Access concurrency
Lehman and Yao showed that all read locks could be avoided (and thus concurrent access greatly improved) by linking the tree blocks at each level together with a "next" pointer. This results in a tree structure where both insertion and search operations descend from the root to the leaf. Write locks are only required as a tree block is modified. This maximizes access concurrency by multiple users, an important consideration for databases and/or other B-Tree based ISAM storage methods. The cost associated with this improvement is that empty pages cannot be removed from the btree during normal operations. (However, see for various strategies to implement node merging, and source code at .)
United States Patent 5283894, granted In 1994, appears to show a way to use a 'Meta Access Method' to allow concurrent B+Tree access and modification without locks. The technique accesses the tree 'upwards' for both searches and updates by means of additional in-memory indexes that point at the blocks in each level in the block cache. No reorganization for deletes is needed and there are no 'next' pointers in each block as in Lehman and Yao.
CS61B: Data Structures - Fall 2006 Instructor Jonathan Shewchuk Fundamental dynamic data structures, including linear lists, queues, trees, and other linked structures; arrays strings, and hash tables. Storage management. Elementary principles of software engineering. Abstract data types. Algorithms for sorting and searching. Introduction to the Java programming language. www.cs.berkeley.edu
This is the second part of the tutorial showing how to paint trees in watercolor - this time summer trees. In this part, we look at a summer tree in full leaf as part of a warm, sunny landscape. Hints about using colors to create sunlight and shadows and using the trees to frame a building. Puts into practice the tips contained in Part A of Painting Summer Trees...
Mohombi's an interesting one -- he's relatively new, and he's signed to RedOne's label, and everyone knows how RedOne can crank out Top 20 hits. He's had a few hits so far, including "Bumpy Ride", and this new one definitely has promise. It features Nicole Scherzinger, the girl behind the Pussycat Dolls. (The only one in the entire group that ever got to sing.) It's got an international/world genre to it, and it's pretty interesting. Sort of has an Akon feel to it. It's like something you'd hear in a club in Hawaii. Check it out!
"Beautiful Tree" - Rain Perry - LIFE UNEXPECTED theme song
— Beautiful Tree words by Rain Perry; music by Rain Perry & Mark Hallman Bent or broken Its the family tree Bent or broken Its the family tree Each branch a part of a part of me This is my tree And Its a beautiful tree Dwarf or giant Its the family tree Dwarf or giant Its the family tree Growing just as tall as it was meant to be This is your tree And its a beautiful tree What a beautiful tree Strong or fragile Its the family tree Strong or fragile Its the family tree See how the sun shines through the leaves This is our tree And its a beautiful tree What a beautiful tree Sure, its broken But Its the family tree Sure, its broken But Its the family tree I can feel the sap running through me This is my tree And its a beautiful tree Rain Perry - "Beautiful Tree" - Cinderblock Bookshelves - Precipitous Records - Directed by Noah Crowe - with special appearances by Mark Hallman, Danny B. Harvey, Sasha Heslip, Kim Maxwell's feet and Sarah & Stella Slaughter (daughters)!
Happy Tree Friends - Home Is Where The Hurt Is (Part 2)
The deconstruction team punches in Giggles house of horrors and makes home bodies of everyone! Episodes, games, merchandise & DVDs visit: www.happytreefriends.com
Two heads are not better than one when Flippy seeks psychiatric counseling from Dr. Lumpy! Episodes, games, merchandise & DVDs visit: www.happytreefriends.com
Happy Tree Friends - The Wrong Side of the Tracks (Part 2)
NEW CD-10/13/08-"Perfect Symmetry"! B-side to 'Somewhere Only We Know'/2004. I've had several PM's asking for further KEANE info, and thought it might be easier if I put what I have all in one place. Enjoy! KEANE OFFICIAL SITE (NEW): www.keanemusic.com KEANE FORUM(NEW): forum.keanemusic.com KEANE MYSPACE: www.myspace.com OTHER SITES: www.keaneshaped.co.uk www.warchild.org www.islandrecords.co.uk www.7digital.com NEW SITE: www.keaneshine.com NEW SITE: www.keanebackline.info
In this clip from 1957's "killer tree" movie, From Hell It Came, a fight between two native girls is broken up when Tabonga, the killer tree appears. Here's a tip if you you ever happen to be thrown into quicksand by a murderous tree: Don't swim away from shore. I'm just saying... For more b-movie goodness, please visit badmovierealm.com
David Wolfe Visits Big Tree Farms Raw Cacao Facility in Bali.
David Wolfe Superfood authority and author of "Naked Chocolate" Visits Big Tree Farm's cacao processing in Bali and verifies the temperatures and quality of a truly Raw cacao Butter and Powder.
Check out the video for Taken By Trees' rendition of Animal Collective's "My Girls", entitled "My Boys" off of her album "East Of Eden". Buy the album here: beggarsgroupusa.com or at iTunes: www.itunes.com/takenbytrees/eastofeden or at Amazon: www.amazon.com
Olive tree “Olea europea” on Bar, Montenegro which is over 2,000 years old
photo: Creative Commons / Joaquín Martínez Rosado
Tropical tree in Campeche, Mexico. The earliest trees were tree ferns, horsetails and lycophytes, which grew in forests in the Carboniferous period; tree ferns still survive, but the only surviving horsetails and lycophytes are not of tree form.
photo: Public Domain / Williampfeifer
Bodhi Tree
photo: Creative Commons / Mr Poortom
Root architecture.
photo: WN / James D.
Lumbang tree - fig tree - banyan tree
photo: WN / akgunsemra
Wood - Wooden - Tree - Trees - Pine tree
photo: publicdomainphoto
Pear tree flowering-pear tree-tree
photo: Creative Commons / Amateria1121
Joshua tree in Nevada
photo: Creative Commons / Gnangarra
Old Jarrah Tree
photo: gnu / Joe Mabel
Hunter's Tree Farm - car with tree.jpg Transporting a recently purchased Christmas tree away from Hunter's Tree Farm lot in the 7700 block of 35th Avenue NE, Wedgwood, Seattle, Washington. The actual Hunter's Tree Farm is in the Skykomish Valley, but they retain this plot of land in the city to sell Christmas trees every year
photo: Creative Commons / Channel R
Olive tree on Ithaca, Greece that is claimed to be over 1500 years old
photo: Creative Commons / Mila Zinkova
The park has three groves of ancient Giant Sequoia (Sequestration gigantic) trees; the Mariposa Grove (200 trees), the Tuolumne Grove (25 trees), and the Merced Grove (20 trees).
photo: Creative Commons
This is:Booby chick standing on a tree and Feeding on the Leaves
photo: Creative Commons / Takwish
Panicle
photo: Creative Commons / Daniel Mayer
The Survivor Tree Rescuers' Orchard: A grove of Oklahoma redbuds (Oklahoma's state tree), Amur Maple, Chinese Pistache, and Bosque Elm trees are planted on the lawn around the Survivor Tree.
photo: WN / James D.
Natural resources of the philippines - coconut trees and trees and banana trees - common environment in philippines provinces
photo: WN / James D.
Akasha tree with a business establishment beneath the tree, trees conservation law,Wednesday, December, 17,2008
The ExaminerHere's a fun article sent to me by my friend, Yvonne Savio, Extension Horticulturist in Los Angeles, California. Kind of a fun conversation starter for the holiday season. Enjoy! What tree did you fall from? Find your birthday, find your tree, and then scroll down on this link to find out what...
The ExaminerTree Mastery is now available in FarmVille! Players who collect the various types of harvestable trees in the virtual game can now work towards mastery signs for them. Mastery Signs are signs that are placed on your FarmVille farm for accomplishing tasks such as planting a certain number of crops. Mastery has been introduced for trees as well, so players can work towards a...
The ExaminerChristmas trees are healthier, fuller and larger this year due to the abundant rain in past seasons, as well as, due to the "recession" which led growers to leave many of last year's Christmas trees in the ground, reports the Nursery Manager at Waterloo Gardens in Devon. For these two reasons, there is an abundance of healthy evergreen trees just...
Canada NewswireOntarians can nominate Heritage Trees with important cultural and historical significance that can provide legacy seeds for the futureTORONTO, June 25 /CNW/ - A province-wide program to identify trees across the province with stories was announced today by Trees Ontario. The Heritage Tree program celebrates those trees that have cultural or historical significance to the...
The ExaminerHow in the world can cutting down millions of evergreen trees be healthy for the planet? This time of the year, millions of evergreens are being cut down to serve as the holiday centerpiece for families to gather around and celebrate. The National Christmas Tree Association (NCTA) reports that in the US, millions of families buy Christmas trees, from either a...
The ExaminerThere are currently 14 types of trees in RuneScape that can be chopped via the Woodcutting Skill, with a hatchet. Ten types of trees in RuneScape are members only and 4 types of trees in RuneScape are available to F2P players. Eleven types of logs can be obtained from these trees. Hollow trees produce bark instead. Five of these trees can be grown via RuneScape Tree Patch...
Canada NewswireOntarians "Dig, Stomp and Mulch" Their Way to Planting Thousands of Trees over Mother's Day WeekendTORONTO, May 9 /CNW/ - Ontarians will be waking up to a greener province tomorrow thanks to many individuals and families who celebrated Mother's Day weekend at Ontario's first ever 50 Million Tree Weekend. Beginning in Alliston, Guelph and Mississauga Friday May 8 and finishing...
The ExaminerThe day after Thanksgiving starts the Christmas and Hanukkah season in the U.S. beginning with pre-dawn shopping sales, but also the day to set up the Christmas tree. It's time to drag out the cumbersome boxed tree limbs from your basement or attic. It's a tedious task, and I know I dreaded it every year when my parents set up the tree. Don't waste your time and...
Canada NewswireOntarians Plant Close to 3 Million Trees Across the Province TORONTO, July 7 /CNW/ - Close to 3 million trees have been planted across southern Ontario this spring; including more than 2 million trees planted as part of the Ontario Ministry of Natural Resources' 50 Million Tree Program, Trees Ontario has announced. Combined with trees planted through other local tree planting...
Canada Newswire> TORONTO, April 9 /CNW/ - Donna Cansfield, Minister of Natural Resources, kicked off the spring tree planting season and announced Ontario's first annual 50 Million Tree Weekend which will feature major community tree planting events during this year's Mother's Day weekend. A team of Girl Guides and the minister planted a healthy native white pine at Toronto's waterfront to...
Quick random insertions and deletions. Thanks to the applet at: slady.net...
B-Tree example
B-Tree example
1:47
B-Tree Example. programing languages. data structure....
CS 61B Lecture 25: Binary Search Trees
CS 61B Lecture 25: Binary Search Trees
47:08
CS61B: Data Structures - Fall 2006 Instructor Jonathan Shewchuk Fundamental dynamic data structures, including linear lists, queues, trees, and other linked structures; arrays strings, and hash tables. Storage management. Elementary princip...
2-3 Tree Insertion
2-3 Tree Insertion
8:00
How to insert values into a 2-3 tree. This video is distributed under the Creative Commons Attribution 2.5 Canada License. creativecommons.org...
Árbol B - (B Tree)
Árbol B - (B Tree)
0:52
Vídeo sobre el funcionamiento de un árbol B...
Painting Watercolour Trees - Painting Summer Trees (Part B)
Painting Watercolour Trees - Painting Summer Trees (Part B)
9:15
This is the second part of the tutorial showing how to paint trees in watercolor - this time summer trees. In this part, we look at a summer tree in full leaf as part of a warm, sunny landscape. Hints about using colors to create sunlight a...
Mohombi feat. Nicole Schezinger - Coconut Tree
Mohombi feat. Nicole Schezinger - Coconut Tree
0:29
Mohombi's an interesting one -- he's relatively new, and he's signed to RedOne's label, and everyone knows how RedOne can crank out Top 20 hits. He's had a few hits so far, including "Bumpy Ride", and this new ...
"Beautiful Tree" - Rain Perry - LIFE UNEXPECTED theme song
"Beautiful Tree" - Rain Perry - LIFE UNEXPECTED theme song
2:43
— Beautiful Tree words by Rain Perry; music by Rain Perry & Mark Hallman Bent or broken Its the family tree Bent or broken Its the family tree Each branch a part of a part of me This is my tree And Its a beautiful tree Dwarf or gi...
Happy Tree Friends - Home Is Where The Hurt Is (Part 2)
Happy Tree Friends - Home Is Where The Hurt Is (Part 2)
3:43
The deconstruction team punches in Giggles house of horrors and makes home bodies of everyone! Episodes, games, merchandise & DVDs visit: www.happytreefriends.com...
Happy Tree Friends - Double Whammy (Part 2 )
Happy Tree Friends - Double Whammy (Part 2 )
4:01
Two heads are not better than one when Flippy seeks psychiatric counseling from Dr. Lumpy! Episodes, games, merchandise & DVDs visit: www.happytreefriends.com...
Happy Tree Friends - The Wrong Side of the Tracks (Part 2)
Happy Tree Friends - The Wrong Side of the Tracks (Part 2)
3:23
Lumpys repair skills on the rollercoaster leave much to be desired! Games, DVD's, TV episodes and more at: www.happytreefriends.com...
Happy Tree Friends - See What Develops (Part 2)
Happy Tree Friends - See What Develops (Part 2)
3:38
Moles fearless reporting is what Editor Lumpy counts on for his front page photo!...
Happy Tree Friends - Change of Heart (Part 2)
Happy Tree Friends - Change of Heart (Part 2)
3:21
Lumpy shows that being a doctor takes more than just skill you need a lot of heart!...
KEANE - "Walnut Tree"
KEANE - "Walnut Tree"
3:37
NEW CD-10/13/08-"Perfect Symmetry"! B-side to 'Somewhere Only We Know'/2004. I've had several PM's asking for further KEANE info, and thought it might be easier if I put what I have all in one place. Enjoy! KEANE O...
Happy Tree Friends - In a Jam (Part 2)
Happy Tree Friends - In a Jam (Part 2)
3:18
Rock, roll and death for Russell means Cuddles gets to audition for Lumpy's band! Episodes, games, merchandise & DVDs visit: www.happytreefriends.com...
Happy Tree Friends - Every Litter Bit Hurts (Part 2)
Happy Tree Friends - Every Litter Bit Hurts (Part 2)
3:47
Giggles cleans up Lumpy's act....
Happy Tree Friends - Sight for Sore Eyes (Part 2)
Happy Tree Friends - Sight for Sore Eyes (Part 2)
3:45
Seeing just what Mole needs, Lumpy the Optometrist prescribes a seeing-eye dog for Mole!...
Happy Tree Friends - Doggone It (Part 2)
Happy Tree Friends - Doggone It (Part 2)
3:26
Watch Lumpy tame the beast! Episodes, games, merchandise & DVDs visit: www.happytreefriends.com...
The Superions - Crummy Christmas Tree (Official Video)
The Superions - Crummy Christmas Tree (Official Video)
2:30
Watch Santa's Disco (Official Video) www.youtube.com on TheSuperionsVEVO Channel From the album "Destination... Christmas!" OUT NOW on Fanatic Records (EMI/Caroline) CD/LP/Digital Download Buy the Deluxe Version on iTunes (inc...
Lemon Tree Animation (with Subtitles)
Lemon Tree Animation (with Subtitles)
3:11
Animation of Fool's Garden's "Lemon Tree."...
Happy Tree Friends - And the Kitchen sink (Part 2)
Happy Tree Friends - And the Kitchen sink (Part 2)
3:34
Rub-a-dub-dub, Pop forgets all about Cub! Episodes, games, merchandise & DVDs visit: www.happytreefriends.com...
[From Hell It Came] Killer Tree Attacks!
[From Hell It Came] Killer Tree Attacks!
2:44
In this clip from 1957's "killer tree" movie, From Hell It Came, a fight between two native girls is broken up when Tabonga, the killer tree appears. Here's a tip if you you ever happen to be thrown into quicksand by a mur...
David Wolfe Visits Big Tree Farms Raw Cacao Facility in Bali.
David Wolfe Visits Big Tree Farms Raw Cacao Facility in Bali.
10:00
David Wolfe Superfood authority and author of "Naked Chocolate" Visits Big Tree Farm's cacao processing in Bali and verifies the temperatures and quality of a truly Raw cacao Butter and Powder....
Taken By Trees - "My Boys"
Taken By Trees - "My Boys"
2:58
Check out the video for Taken By Trees' rendition of Animal Collective's "My Girls", entitled "My Boys" off of her album "East Of Eden". Buy the album here: beggarsgroupusa.com or at iTunes: www.itunes....
Quick random insertions and deletions. Thanks to the applet at: slady.net...
Árbol B* - (B* Tree)
Árbol B* - (B* Tree)
0:53
Vídeo sobre el funcionamiento de un árbol B*...
B-Tree example
B-Tree example
1:47
B-Tree Example. programing languages. data structure....
Árbol B - (B Tree)
Árbol B - (B Tree)
0:52
Vídeo sobre el funcionamiento de un árbol B...
Happy Tree Friends - See What Develops (Part 2)
Happy Tree Friends - See What Develops (Part 2)
3:38
Moles fearless reporting is what Editor Lumpy counts on for his front page photo!...
Happy Tree Friends - Home Is Where The Hurt Is (Part 2)
Happy Tree Friends - Home Is Where The Hurt Is (Part 2)
3:43
The deconstruction team punches in Giggles house of horrors and makes home bodies of everyone! Episodes, games, merchandise & DVDs visit: www.happytreefriends.com...
Happy Tree Friends - Double Whammy (Part 2 )
Happy Tree Friends - Double Whammy (Part 2 )
4:01
Two heads are not better than one when Flippy seeks psychiatric counseling from Dr. Lumpy! Episodes, games, merchandise & DVDs visit: www.happytreefriends.com...
Happy Tree Friends - Concrete Solution (Part 2)
Happy Tree Friends - Concrete Solution (Part 2)
3:57
It's all work and no play for the Happy Tree Friends! Games, DVD's, TV episodes and more at: www.happytreefriends.com...
Happy Tree Friends - Who's to Flame (Part 2)
Happy Tree Friends - Who's to Flame (Part 2)
3:42
The HTF Fire Squad tries to contain this out-of-control blaze. Episodes, games, merchandise & DVDs visit: www.happytreefriends.com...