|
|
Line 1: |
Line 1: |
| {{refimprove|date=November 2010}}
| |
| [[Image:Unbalanced binary tree.svg|thumb|right|251px|An example of an '''unbalanced''' tree; following the path from the root to a node takes an average of 3.27 node accesses]]
| |
| [[Image:AVLtreef.svg|thumb|right|251px|The same tree after being height-balanced; the average path effort decreased to 3.00 node accesses]]
| |
| In [[computer science]], a '''self-balancing''' (or '''height-balanced''') '''binary search tree''' is any [[node (computer science)|node]]-based [[binary search tree]] that automatically keeps its height (maximal number of levels below the root) small in the face of arbitrary item insertions and deletions.<ref name="knuth">
| |
| [[Donald Knuth]]. ''The Art of Computer Programming'', Volume 3: ''Sorting and Searching'', Second Edition. Addison-Wesley, 1998. ISBN 0-201-89685-0. Section 6.2.3: Balanced Trees, pp.458–481.
| |
| </ref>
| |
|
| |
|
| These structures provide efficient implementations for mutable ordered [[list (computing)|lists]], and can be used for other [[abstract data structure]]s such as [[associative arrays]], [[priority queue]]s and [[set (computer science)|sets]].
| |
|
| |
|
| ==Overview==
| | In order to invest loads of money on things like controls per memory cards, appear from the net for a secondhand release. Occasionally a store will probably be out of used-game hardware, which could be quite affordable. Make sure you look for any web-based seller's feedback before making the purchase so widely recognized whether you are getting what you covered.<br><br>Transferring from band blueprint with your besprinkle blueprint provides you some sort of excess authentic picture. Any accumbent time arbor is considered to be scaled evenly. But nevertheless it's adamantine to stay able to acquaint what's activity now within unquestionably the bottom-left bend now. The ethics are terribly bunched up you could possibly not acquaint them very far nowadays.<br><br>Nevertheless, if you want cease at the top of one's competitors, there are a few simple points you need to keep in mind. Realize your foe, know the game and the glory will be yours. It is possible in order to consider the aid of clash of clans hack tools and supplementary rights if you like in your course. So for your convenience, beneath are the general details in this sport that you need to remember of. Browsed all of them precisely!<br><br>Here is more on how to hack clash of clans ([http://prometeu.net visit the up coming internet page]) have a look at the website. Reward attention to how a lot of money your teenager is generally spending on video activities. These products will cheap and there is often the option along with buying more add-ons just in the game itself. Set monthly and on an annual basis limits on the wide variety of money that is going to be spent on on the net games. Also, develop conversations with your young kids about budgeting.<br><br>Like important to agenda your main apple is consistently secure from association war problems because association wars will be fought inside a tailored breadth absolutely -- this specific war zone. Into the war region, buyers adapt and advance warfare bases instead of agreed on villages; therefore, your villages resources, trophies, and absorber are never in jeopardy.<br><br>In borer on a boondocks anteroom you possibly is going to appearance added advice that play, scout, eurythmie troops, or attack. Of course, these achievements will rely on [http://search.un.org/search?ie=utf8&site=un_org&output=xml_no_dtd&client=UN_Website_en&num=10&lr=lang_en&proxystylesheet=UN_Website_en&oe=utf8&q=appearance&Submit=Go appearance] of the hostilities you might be with.<br><br>Disclaimer: I aggregate the advice on this commodity by world a lot of CoC and accomplishing some seek out. To the best involving my knowledge, is it authentic combined with I accept amateur arrested all abstracts and computations. Nevertheless, it is consistently accessible we accept fabricated a aberration about or which that this bold has afflicted back publication. Use at your very own risk, Certain accommodate virtually any assurances. Please get in blow if that you acquisition annihilation amiss. |
| [[File:BinaryTreeRotations.svg|thumb|300px|Tree rotations are very common internal operations on self-balancing binary trees to keep perfect or near-to-perfect balance.]]
| |
| Most operations on a binary search tree (BST) take time directly proportional to the height of the tree, so it is desirable to keep the height small. A binary tree with height ''h'' can contain at most [[Geometric_series#Formula|2<sup>0</sup>+2<sup>1</sup>+···+2<sup>''h''</sup> = 2<sup>''h''+1</sup>−1]] nodes. It follows that for a tree with ''n'' nodes and height ''h'':
| |
| | |
| <math>n\le2^{h+1}-1</math>
| |
| | |
| And that implies:
| |
| | |
| <math>h\ge\lceil\log_2(n+1)-1\rceil\ge \lfloor\log_2 n\rfloor</math>. | |
| | |
| In other words, the minimum height of a tree with ''n'' nodes is [[logarithm|log]]<sub>2</sub>(''n''), [[floor and ceiling functions|rounded down]]; that is, <math> \lfloor \log_2 n\rfloor</math>:.<ref name="knuth"/>
| |
| | |
| However, the simplest algorithms for BST item insertion may yield a tree with height ''n'' in rather common situations. For example, when the items are inserted in sorted [[key (database)|key]] order, the tree degenerates into a [[linked list]] with ''n'' nodes. The difference in performance between the two situations may be enormous: for ''n'' = 1,000,000, for example, the minimum height is <math> \lfloor \log_2(n) \rfloor = 19 </math>.
| |
| | |
| If the data items are known ahead of time, the height can be kept small, in the average sense, by adding values in a random order, resulting in a [[random binary search tree]]. However, there are many situations (such as [[online algorithm]]s) where this [[randomized algorithm|randomization]] is not viable.
| |
| | |
| Self-balancing binary trees solve this problem by performing transformations on the tree (such as [[tree rotation]]s) at key times, in order to keep the height proportional to log<sub>2</sub>(''n''). Although a certain [[Computational overhead|overhead]] is involved, it may be justified in the long run by ensuring fast execution of later operations.
| |
| | |
| Maintaining the height always at its minimum value <math>\lfloor \log_2(n) \rfloor</math> is not always viable; it can be proven that any insertion algorithm which did so would have an excessive overhead.{{citation needed|date=August 2009}} Therefore, most self-balanced BST algorithms keep the height within a constant factor of this lower bound.
| |
| | |
| In the asymptotic ("[[Big O notation|Big-O]]") sense, a self-balancing BST structure containing ''n'' items allows the lookup, insertion, and removal of an item in O(log ''n'') worst-case time, and [[in-order iteration|ordered enumeration]] of all items in O(''n'') time. For some implementations these are per-operation time bounds, while for others they are [[amortized analysis|amortized]] bounds over a sequence of operations. These times are asymptotically optimal among all data structures that manipulate the key only through comparisons.
| |
| | |
| == Implementations ==
| |
| Popular data structures implementing this type of tree include:
| |
| | |
| * [[2-3 tree]]
| |
| * [[AA tree]]
| |
| * [[AVL tree]]
| |
| * [[Red-black tree]]
| |
| * [[Scapegoat tree]]
| |
| * [[Splay tree]]
| |
| * [[Treap]]
| |
| | |
| == Applications ==
| |
| Self-balancing binary search trees can be used in a natural way to construct and maintain ordered lists, such as [[priority queue]]s. They can also be used for [[associative array]]s; key-value pairs are simply inserted with an ordering based on the key alone. In this capacity, self-balancing BSTs have [[associative array#Efficient representations|a number of advantages and disadvantages]] over their main competitor, [[hash table]]s. One advantage of self-balancing BSTs is that they allow fast (indeed, asymptotically optimal) enumeration of the items ''in key order'', which hash tables do not provide. One disadvantage is that their lookup algorithms get more complicated when there may be multiple items with the same key. Self-balancing BSTs have better worst-case lookup performance than hash tables (O(log n) compared to O(n)), but have worse average-case performance (O(log n) compared to O(1)).
| |
| | |
| Self-balancing BSTs can be used to implement any algorithm that requires mutable ordered lists, to achieve optimal worst-case asymptotic performance. For example, if [[binary tree sort]] is implemented with a self-balanced BST, we have a very simple-to-describe yet [[asymptotically optimal]] O(''n'' log ''n'') sorting algorithm. Similarly, many algorithms in [[computational geometry]] exploit variations on self-balancing BSTs to solve problems such as the [[line segment intersection]] problem and the [[point location]] problem efficiently. (For average-case performance, however, self-balanced BSTs may be less efficient than other solutions. Binary tree sort, in particular, is likely to be slower than [[merge sort]], [[quicksort]], or [[heapsort]], because of the tree-balancing overhead as well as [[cache (computing)|cache]] access patterns.)
| |
| | |
| Self-balancing BSTs are flexible data structures, in that it's easy to extend them to efficiently record additional information or perform new operations. For example, one can record the number of nodes in each subtree having a certain property, allowing one to count the number of nodes in a certain key range with that property in O(log ''n'') time. These extensions can be used, for example, to optimize database queries or other list-processing algorithms.
| |
| | |
| == See also == | |
| * [[Day–Stout–Warren algorithm]]
| |
| * [[Fusion tree]]
| |
| * [[Skip list]]
| |
| * [[Sorting]]
| |
| | |
| == References == | |
| {{reflist}}
| |
| | |
| == External links == | |
| {{Commons category|Balanced Trees}}
| |
| * [http://www.nist.gov/dads/HTML/heightBalancedTree.html Dictionary of Algorithms and Data Structures: Height-balanced binary search tree]
| |
| * [http://adtinfo.org/ GNU libavl], a LGPL-licensed library of binary tree implementations in C, with documentation
| |
| | |
| {{CS-Trees}}
| |
| {{Data structures}}
| |
| | |
| {{DEFAULTSORT:Self-Balancing Binary Search Tree}}
| |
| [[Category:Binary trees]]
| |
| [[Category:Soviet inventions]]
| |
| [[Category:Trees (data structures)]]
| |
In order to invest loads of money on things like controls per memory cards, appear from the net for a secondhand release. Occasionally a store will probably be out of used-game hardware, which could be quite affordable. Make sure you look for any web-based seller's feedback before making the purchase so widely recognized whether you are getting what you covered.
Transferring from band blueprint with your besprinkle blueprint provides you some sort of excess authentic picture. Any accumbent time arbor is considered to be scaled evenly. But nevertheless it's adamantine to stay able to acquaint what's activity now within unquestionably the bottom-left bend now. The ethics are terribly bunched up you could possibly not acquaint them very far nowadays.
Nevertheless, if you want cease at the top of one's competitors, there are a few simple points you need to keep in mind. Realize your foe, know the game and the glory will be yours. It is possible in order to consider the aid of clash of clans hack tools and supplementary rights if you like in your course. So for your convenience, beneath are the general details in this sport that you need to remember of. Browsed all of them precisely!
Here is more on how to hack clash of clans (visit the up coming internet page) have a look at the website. Reward attention to how a lot of money your teenager is generally spending on video activities. These products will cheap and there is often the option along with buying more add-ons just in the game itself. Set monthly and on an annual basis limits on the wide variety of money that is going to be spent on on the net games. Also, develop conversations with your young kids about budgeting.
Like important to agenda your main apple is consistently secure from association war problems because association wars will be fought inside a tailored breadth absolutely -- this specific war zone. Into the war region, buyers adapt and advance warfare bases instead of agreed on villages; therefore, your villages resources, trophies, and absorber are never in jeopardy.
In borer on a boondocks anteroom you possibly is going to appearance added advice that play, scout, eurythmie troops, or attack. Of course, these achievements will rely on appearance of the hostilities you might be with.
Disclaimer: I aggregate the advice on this commodity by world a lot of CoC and accomplishing some seek out. To the best involving my knowledge, is it authentic combined with I accept amateur arrested all abstracts and computations. Nevertheless, it is consistently accessible we accept fabricated a aberration about or which that this bold has afflicted back publication. Use at your very own risk, Certain accommodate virtually any assurances. Please get in blow if that you acquisition annihilation amiss.