SlideShare une entreprise Scribd logo
1  sur  29
Red-Black Trees—Again


• rank(x) = # black pointers on path from x to an
  external node.
• Same as #black nodes (excluding x) from x to an
  external node.
• rank(external node) = 0.
An Example
                                                  3
                                            10

                                                                             2
                    2   7                                               40

        1   3               1   8                     2 30                       1   45



1                                            1                 1   35                     1 60
    1           1   5                            20
                            0       0                                            0
                                                      1   25
                                                                   0    0             0          0
0       0 0             0               0
                                                 0                 0
Properties Of rank(x)

•   rank(x) = 0 for x an external node.
•   rank(x) = 1 for x parent of external node.
•   p(x) exists => rank(x) <= rank(p(x)) <= rank(x) + 1.
•   g(x) exists => rank(x) < rank(g(x)).
Red-Black Tree

A binary search tree is a red-black tree iff
 integer ranks can be assigned to its nodes so
 as to satisfy the stated 4 properties of rank.
Relationship Between rank() And Color

•   (p(x),x) is a red pointer iff rank(x) = rank(p(x)).
•   (p(x),x) is a black pointer iff rank(x) = rank(p(x)) – 1.
•   Red node iff pointer from parent is red.
•   Root is black.
•   Other nodes are black iff pointer from parent is black.
•   Given rank(root) and node/pointer colors, remaining
    ranks may be computed on way down.
rank(root)

• Height <= 2 * rank(root).
• No external nodes at levels 1, 2, …, rank(root).
   So, #nodes >= 1 <= i <= rank(root) 2i -1 = 2 rank(root) – 1.
   So, rank(root) <= log2(n+1).
• So, height(root) <= 2log2(n+1).
Join(S,m,B)
• Input
     Dictionary S of pairs with small keys.
     Dictionary B of pairs with big keys.
     An additional pair m.
     All keys in S are smaller than m.key.
     All keys in B are bigger than m.key.
• Output
   A dictionary that contains all pairs in S and B
    plus the pair m.
   Dictionaries S and B may be destroyed.
Join Binary Search Trees

                   m


               S       B




• O(1) time.
Join Red-black Trees

• When rank(S) = rank(B), use binary search tree
  method.

                       m


                  S          B

• rank(root) = rank(S) + 1 = rank(B) + 1.
rank(S) > rank(B)
• Follow right child pointers from root of S to first node
  x whose rank equals rank(B).


                                       p(x)
        p(x)

                                                 m
   S               x
                                           x          B
               a       b
                                       a        b
rank(S) > rank(B)
• If there are now 2 consecutive red pointers/nodes,
  perform bottom-up rebalancing beginning at m.
• O(rank(S) – rank(B)).

                                   p(x)
        p(x)
                                            m
   S               x
                                       x        B
               a       b
                                   a       b
rank(S) < rank(B)



• Follow left child pointers from root of B to first
  node x whose rank equals rank(B).
• Similar to case when rank(S) > rank(B).
Split(k)

• Inverse of join.
• Obtain
   S … dictionary of pairs with key < k.
   B … dictionary of pairs with key > k.
   m … pair with key = k (if present).
Split A Binary Search Tree
        A              S                 B

a           B
        C       b
    c       D
        E       d
    e       m
        f       g
Split A Binary Search Tree
                        S            B

        B           A
    C       b   a
c       D
    E       d
e       m
    f       g
Split A Binary Search Tree
                        S              B

                    A          B
    C           a                  b
c       D
    E       d
e       m
    f       g
Split A Binary Search Tree
                        S              B

                    A          B
                a       C          b
        D
                    c
    E       d
e       m
    f       g
Split A Binary Search Tree
                        S                   B

                    A               B
                a       C   D           b

                    c           d
    E
e       m
    f       g
Split A Binary Search Tree
                    S                       B

                A                   B
            a       C       D           b

                c       E       d

                    e
    m
f       g
Split A Binary Search Tree
               S                               B

           A                           B
       a       C               D           b

           c       E       g       d

               e       f
m
Split A Red-Black Tree

• Previous strategy does not split a red-black
  tree into two red-black trees.
• Must do a search for m followed by a
  traceback to the root.
• During the traceback use the join operation
  to construct S and B.
Split A Red-Black Tree
        A             S=f       B=g
a           B
        C       b
    c       D
        E       d
    e       m
        f       g
Split A Red-Black Tree
        A             S=f       B=g
a           B
        C       b
    c       D
        E       d
    e
Split A Red-Black Tree
        A             S=f           B=g
a           B          S = join(e, E, S)
        C       b
    c       D
        E       d
    e
Split A Red-Black Tree
    A                 S=f           B =g
a           B          S = join(e, E, S)
        C       b      B = join(B, D, d)
    c       D
                d
Split A Red-Black Tree
    A                 S=f           B =g
a           B          S = join(e, E, S)
        C       b      B = join(B, D, d)
    c                  S = join(c, C, S)
Split A Red-Black Tree
    A             S=f           B =g
a       B          S = join(e, E, S)
            b      B = join(B, D, d)
                   S = join(c, C, S)
                   B = join(B, B, b)
Split A Red-Black Tree
    A         S=f           B =g
a              S = join(e, E, S)
               B = join(B, D, d)
               S = join(c, C, S)
               B = join(B, B, b)

               S = join(a, A, S)
Complexity Of Split

• O(log n)
• See text.

Contenu connexe

Tendances

Lecture 8 dynamic programming
Lecture 8 dynamic programmingLecture 8 dynamic programming
Lecture 8 dynamic programming
Oye Tu
 
Circle drawing algo.
Circle drawing algo.Circle drawing algo.
Circle drawing algo.
Mohd Arif
 

Tendances (20)

Heap Sort || Heapify Method || Build Max Heap Algorithm
Heap Sort || Heapify Method || Build Max Heap AlgorithmHeap Sort || Heapify Method || Build Max Heap Algorithm
Heap Sort || Heapify Method || Build Max Heap Algorithm
 
Binary search
Binary searchBinary search
Binary search
 
strassen matrix multiplication algorithm
strassen matrix multiplication algorithmstrassen matrix multiplication algorithm
strassen matrix multiplication algorithm
 
Number Theory for Security
Number Theory for SecurityNumber Theory for Security
Number Theory for Security
 
Trees in data structure
Trees in data structureTrees in data structure
Trees in data structure
 
BTrees - Great alternative to Red Black, AVL and other BSTs
BTrees - Great alternative to Red Black, AVL and other BSTsBTrees - Great alternative to Red Black, AVL and other BSTs
BTrees - Great alternative to Red Black, AVL and other BSTs
 
Java: Class Design Examples
Java: Class Design ExamplesJava: Class Design Examples
Java: Class Design Examples
 
Lecture 8 dynamic programming
Lecture 8 dynamic programmingLecture 8 dynamic programming
Lecture 8 dynamic programming
 
Algorithms Lecture 6: Searching Algorithms
Algorithms Lecture 6: Searching AlgorithmsAlgorithms Lecture 6: Searching Algorithms
Algorithms Lecture 6: Searching Algorithms
 
Binary search tree in data structures
Binary search tree in  data structuresBinary search tree in  data structures
Binary search tree in data structures
 
Mid point circle algorithm
Mid point circle algorithmMid point circle algorithm
Mid point circle algorithm
 
Tree and graph
Tree and graphTree and graph
Tree and graph
 
DBMS Canonical cover
DBMS Canonical coverDBMS Canonical cover
DBMS Canonical cover
 
Binary Tree in Data Structure
Binary Tree in Data StructureBinary Tree in Data Structure
Binary Tree in Data Structure
 
Quick sort
Quick sortQuick sort
Quick sort
 
line clipping
line clipping line clipping
line clipping
 
Circle drawing algo.
Circle drawing algo.Circle drawing algo.
Circle drawing algo.
 
Binary search
Binary searchBinary search
Binary search
 
Top down parsing
Top down parsingTop down parsing
Top down parsing
 
Presentation on the topic selection sort
Presentation on the topic selection sortPresentation on the topic selection sort
Presentation on the topic selection sort
 

Similaire à Red black 2 (10)

DS MCQS.pptx
DS MCQS.pptxDS MCQS.pptx
DS MCQS.pptx
 
Trees, Binary Search Tree, AVL Tree in Data Structures
Trees, Binary Search Tree, AVL Tree in Data Structures Trees, Binary Search Tree, AVL Tree in Data Structures
Trees, Binary Search Tree, AVL Tree in Data Structures
 
2 depth first
2 depth first2 depth first
2 depth first
 
Lec21
Lec21Lec21
Lec21
 
09 binary-trees
09 binary-trees09 binary-trees
09 binary-trees
 
(Binary tree)
(Binary tree)(Binary tree)
(Binary tree)
 
Roots of polynomials
Roots of polynomialsRoots of polynomials
Roots of polynomials
 
Mock 1
Mock 1Mock 1
Mock 1
 
Unit 6 tree
Unit   6 treeUnit   6 tree
Unit 6 tree
 
Modul penggunaan kalkulator sainstifik sebagai ABM dalam Matematik
Modul penggunaan kalkulator sainstifik sebagai ABM dalam MatematikModul penggunaan kalkulator sainstifik sebagai ABM dalam Matematik
Modul penggunaan kalkulator sainstifik sebagai ABM dalam Matematik
 

Plus de Core Condor

Plus de Core Condor (6)

Weighted graphs
Weighted graphsWeighted graphs
Weighted graphs
 
Red black 1
Red black 1Red black 1
Red black 1
 
Graph isomorphism
Graph isomorphismGraph isomorphism
Graph isomorphism
 
Disjoint sets
Disjoint setsDisjoint sets
Disjoint sets
 
Red blacktrees
Red blacktreesRed blacktrees
Red blacktrees
 
2 3 tree
2 3 tree2 3 tree
2 3 tree
 

Dernier

Salient Features of India constitution especially power and functions
Salient Features of India constitution especially power and functionsSalient Features of India constitution especially power and functions
Salient Features of India constitution especially power and functions
KarakKing
 
The basics of sentences session 3pptx.pptx
The basics of sentences session 3pptx.pptxThe basics of sentences session 3pptx.pptx
The basics of sentences session 3pptx.pptx
heathfieldcps1
 

Dernier (20)

Graduate Outcomes Presentation Slides - English
Graduate Outcomes Presentation Slides - EnglishGraduate Outcomes Presentation Slides - English
Graduate Outcomes Presentation Slides - English
 
Python Notes for mca i year students osmania university.docx
Python Notes for mca i year students osmania university.docxPython Notes for mca i year students osmania university.docx
Python Notes for mca i year students osmania university.docx
 
How to Add New Custom Addons Path in Odoo 17
How to Add New Custom Addons Path in Odoo 17How to Add New Custom Addons Path in Odoo 17
How to Add New Custom Addons Path in Odoo 17
 
On_Translating_a_Tamil_Poem_by_A_K_Ramanujan.pptx
On_Translating_a_Tamil_Poem_by_A_K_Ramanujan.pptxOn_Translating_a_Tamil_Poem_by_A_K_Ramanujan.pptx
On_Translating_a_Tamil_Poem_by_A_K_Ramanujan.pptx
 
Sociology 101 Demonstration of Learning Exhibit
Sociology 101 Demonstration of Learning ExhibitSociology 101 Demonstration of Learning Exhibit
Sociology 101 Demonstration of Learning Exhibit
 
General Principles of Intellectual Property: Concepts of Intellectual Proper...
General Principles of Intellectual Property: Concepts of Intellectual  Proper...General Principles of Intellectual Property: Concepts of Intellectual  Proper...
General Principles of Intellectual Property: Concepts of Intellectual Proper...
 
How to Create and Manage Wizard in Odoo 17
How to Create and Manage Wizard in Odoo 17How to Create and Manage Wizard in Odoo 17
How to Create and Manage Wizard in Odoo 17
 
SOC 101 Demonstration of Learning Presentation
SOC 101 Demonstration of Learning PresentationSOC 101 Demonstration of Learning Presentation
SOC 101 Demonstration of Learning Presentation
 
Holdier Curriculum Vitae (April 2024).pdf
Holdier Curriculum Vitae (April 2024).pdfHoldier Curriculum Vitae (April 2024).pdf
Holdier Curriculum Vitae (April 2024).pdf
 
This PowerPoint helps students to consider the concept of infinity.
This PowerPoint helps students to consider the concept of infinity.This PowerPoint helps students to consider the concept of infinity.
This PowerPoint helps students to consider the concept of infinity.
 
Salient Features of India constitution especially power and functions
Salient Features of India constitution especially power and functionsSalient Features of India constitution especially power and functions
Salient Features of India constitution especially power and functions
 
Google Gemini An AI Revolution in Education.pptx
Google Gemini An AI Revolution in Education.pptxGoogle Gemini An AI Revolution in Education.pptx
Google Gemini An AI Revolution in Education.pptx
 
Accessible Digital Futures project (20/03/2024)
Accessible Digital Futures project (20/03/2024)Accessible Digital Futures project (20/03/2024)
Accessible Digital Futures project (20/03/2024)
 
The basics of sentences session 3pptx.pptx
The basics of sentences session 3pptx.pptxThe basics of sentences session 3pptx.pptx
The basics of sentences session 3pptx.pptx
 
Exploring_the_Narrative_Style_of_Amitav_Ghoshs_Gun_Island.pptx
Exploring_the_Narrative_Style_of_Amitav_Ghoshs_Gun_Island.pptxExploring_the_Narrative_Style_of_Amitav_Ghoshs_Gun_Island.pptx
Exploring_the_Narrative_Style_of_Amitav_Ghoshs_Gun_Island.pptx
 
How to setup Pycharm environment for Odoo 17.pptx
How to setup Pycharm environment for Odoo 17.pptxHow to setup Pycharm environment for Odoo 17.pptx
How to setup Pycharm environment for Odoo 17.pptx
 
Wellbeing inclusion and digital dystopias.pptx
Wellbeing inclusion and digital dystopias.pptxWellbeing inclusion and digital dystopias.pptx
Wellbeing inclusion and digital dystopias.pptx
 
REMIFENTANIL: An Ultra short acting opioid.pptx
REMIFENTANIL: An Ultra short acting opioid.pptxREMIFENTANIL: An Ultra short acting opioid.pptx
REMIFENTANIL: An Ultra short acting opioid.pptx
 
Kodo Millet PPT made by Ghanshyam bairwa college of Agriculture kumher bhara...
Kodo Millet  PPT made by Ghanshyam bairwa college of Agriculture kumher bhara...Kodo Millet  PPT made by Ghanshyam bairwa college of Agriculture kumher bhara...
Kodo Millet PPT made by Ghanshyam bairwa college of Agriculture kumher bhara...
 
On National Teacher Day, meet the 2024-25 Kenan Fellows
On National Teacher Day, meet the 2024-25 Kenan FellowsOn National Teacher Day, meet the 2024-25 Kenan Fellows
On National Teacher Day, meet the 2024-25 Kenan Fellows
 

Red black 2

  • 1. Red-Black Trees—Again • rank(x) = # black pointers on path from x to an external node. • Same as #black nodes (excluding x) from x to an external node. • rank(external node) = 0.
  • 2. An Example 3 10 2 2 7 40 1 3 1 8 2 30 1 45 1 1 1 35 1 60 1 1 5 20 0 0 0 1 25 0 0 0 0 0 0 0 0 0 0 0
  • 3. Properties Of rank(x) • rank(x) = 0 for x an external node. • rank(x) = 1 for x parent of external node. • p(x) exists => rank(x) <= rank(p(x)) <= rank(x) + 1. • g(x) exists => rank(x) < rank(g(x)).
  • 4. Red-Black Tree A binary search tree is a red-black tree iff integer ranks can be assigned to its nodes so as to satisfy the stated 4 properties of rank.
  • 5. Relationship Between rank() And Color • (p(x),x) is a red pointer iff rank(x) = rank(p(x)). • (p(x),x) is a black pointer iff rank(x) = rank(p(x)) – 1. • Red node iff pointer from parent is red. • Root is black. • Other nodes are black iff pointer from parent is black. • Given rank(root) and node/pointer colors, remaining ranks may be computed on way down.
  • 6. rank(root) • Height <= 2 * rank(root). • No external nodes at levels 1, 2, …, rank(root).  So, #nodes >= 1 <= i <= rank(root) 2i -1 = 2 rank(root) – 1.  So, rank(root) <= log2(n+1). • So, height(root) <= 2log2(n+1).
  • 7. Join(S,m,B) • Input  Dictionary S of pairs with small keys.  Dictionary B of pairs with big keys.  An additional pair m.  All keys in S are smaller than m.key.  All keys in B are bigger than m.key. • Output  A dictionary that contains all pairs in S and B plus the pair m.  Dictionaries S and B may be destroyed.
  • 8. Join Binary Search Trees m S B • O(1) time.
  • 9. Join Red-black Trees • When rank(S) = rank(B), use binary search tree method. m S B • rank(root) = rank(S) + 1 = rank(B) + 1.
  • 10. rank(S) > rank(B) • Follow right child pointers from root of S to first node x whose rank equals rank(B). p(x) p(x) m S x x B a b a b
  • 11. rank(S) > rank(B) • If there are now 2 consecutive red pointers/nodes, perform bottom-up rebalancing beginning at m. • O(rank(S) – rank(B)). p(x) p(x) m S x x B a b a b
  • 12. rank(S) < rank(B) • Follow left child pointers from root of B to first node x whose rank equals rank(B). • Similar to case when rank(S) > rank(B).
  • 13. Split(k) • Inverse of join. • Obtain  S … dictionary of pairs with key < k.  B … dictionary of pairs with key > k.  m … pair with key = k (if present).
  • 14. Split A Binary Search Tree A S B a B C b c D E d e m f g
  • 15. Split A Binary Search Tree S B B A C b a c D E d e m f g
  • 16. Split A Binary Search Tree S B A B C a b c D E d e m f g
  • 17. Split A Binary Search Tree S B A B a C b D c E d e m f g
  • 18. Split A Binary Search Tree S B A B a C D b c d E e m f g
  • 19. Split A Binary Search Tree S B A B a C D b c E d e m f g
  • 20. Split A Binary Search Tree S B A B a C D b c E g d e f m
  • 21. Split A Red-Black Tree • Previous strategy does not split a red-black tree into two red-black trees. • Must do a search for m followed by a traceback to the root. • During the traceback use the join operation to construct S and B.
  • 22. Split A Red-Black Tree A S=f B=g a B C b c D E d e m f g
  • 23. Split A Red-Black Tree A S=f B=g a B C b c D E d e
  • 24. Split A Red-Black Tree A S=f B=g a B S = join(e, E, S) C b c D E d e
  • 25. Split A Red-Black Tree A S=f B =g a B S = join(e, E, S) C b B = join(B, D, d) c D d
  • 26. Split A Red-Black Tree A S=f B =g a B S = join(e, E, S) C b B = join(B, D, d) c S = join(c, C, S)
  • 27. Split A Red-Black Tree A S=f B =g a B S = join(e, E, S) b B = join(B, D, d) S = join(c, C, S) B = join(B, B, b)
  • 28. Split A Red-Black Tree A S=f B =g a S = join(e, E, S) B = join(B, D, d) S = join(c, C, S) B = join(B, B, b) S = join(a, A, S)
  • 29. Complexity Of Split • O(log n) • See text.