red–black!trees! - simon fraser universitymori/courses/cmpt225/slides/cmpt225_6re… ·...

44
Red–black trees

Upload: others

Post on 21-Aug-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Red–black!trees! - Simon Fraser Universitymori/courses/cmpt225/slides/cmpt225_6re… · Definethe red+black!tree!properties!! Describe!and!implement!rotations!! Implement!red+black!tree!insertion!!

Red–black  trees  

Page 2: Red–black!trees! - Simon Fraser Universitymori/courses/cmpt225/slides/cmpt225_6re… · Definethe red+black!tree!properties!! Describe!and!implement!rotations!! Implement!red+black!tree!insertion!!

¡  Define  the  red-­‐black  tree  properties  ¡  Describe  and  implement  rotations  ¡  Implement  red-­‐black  tree  insertion  

§ We  will  skip  red-­‐black  tree  deletion  

October 2004 John Edgar 2

Page 3: Red–black!trees! - Simon Fraser Universitymori/courses/cmpt225/slides/cmpt225_6re… · Definethe red+black!tree!properties!! Describe!and!implement!rotations!! Implement!red+black!tree!insertion!!

¡  Items  can  be  inserted  in  and  removed  from  BSTs  in  O(height)  time    

¡  So  what  is  the  height  of  a  BST?  §  If  the  tree  is  balanced:  O(logn)  

§  If  the  tree  is  very  unbalanced:  O(n)  

October 2004 John Edgar 3

43

61

24 61

12 37

12

24

43

37

balanced  BST  

height  =  O(logn)  

unbalanced  BST  

height  =  O(n)  

Page 4: Red–black!trees! - Simon Fraser Universitymori/courses/cmpt225/slides/cmpt225_6re… · Definethe red+black!tree!properties!! Describe!and!implement!rotations!! Implement!red+black!tree!insertion!!

¡  Define  a  balanced  binary  tree  as  one  where  §  There  is  no  path  from  the  root  to  a  leaf*  that  is  more  than  twice  as  long  as  any  other  such  path  

§  The  height  of  such  a  tree  is  O(logn)  ¡  Guaranteeing  that  a  BST  is  balanced  requires  either  

§  A  more  complex  structure  (2-­‐3  and  2-­‐3-­‐4  trees)  or  §  More  complex  insertion  and  deletion  algorithms  (red-­‐black  trees)  

October 2004 John Edgar 4

*definition of leaf on next slide

Page 5: Red–black!trees! - Simon Fraser Universitymori/courses/cmpt225/slides/cmpt225_6re… · Definethe red+black!tree!properties!! Describe!and!implement!rotations!! Implement!red+black!tree!insertion!!

¡  A  red-­‐black  tree  is  a  balanced  BST  ¡  Each  node  has  an  extra  colour  field  which  is  

§  red  or  black  ▪  Usually  represented  as  a  boolean  –  isBlack

¡  Nodes  have  an  extra  pointer  to  their  parent ¡  Imagine  that  empty  nodes  are  added  so  that  every  

real  node  has  two  children  §  They  are  imaginary  nodes  so  are  not  allocated  space  §  The  imaginary  nodes  are  always  coloured  black  

October 2004 John Edgar 5

Page 6: Red–black!trees! - Simon Fraser Universitymori/courses/cmpt225/slides/cmpt225_6re… · Definethe red+black!tree!properties!! Describe!and!implement!rotations!! Implement!red+black!tree!insertion!!

1.  Every  node  is  either  red  or  black  2.  Every  leaf  is  black  

§  This  refers  to  the  imaginary  leaves  ▪  i.e.  every  null  child  of  a  node  is  considered  to  be  a  black  leaf  

3.  If  a  node  is  red  both  its  children  must  be  black  4.  Every  path  from  a  node  to  a  leaf  contains  the  same  

number  of  black  nodes  5.  The  root  is  black  (mainly  for  convenience)  

October 2004 John Edgar 6

Page 7: Red–black!trees! - Simon Fraser Universitymori/courses/cmpt225/slides/cmpt225_6re… · Definethe red+black!tree!properties!! Describe!and!implement!rotations!! Implement!red+black!tree!insertion!!

¡  Perfect  trees  are  perfectly  balanced  §  But  they  are  inflexible,  can  only  store  1,  3,  7,  …  nodes  

¡  “Black”  nodes  form  a  perfect  tree  ¡  “Red”  nodes  allow  flexibility  

¡  Draw  some  pictures  

October 2004 John Edgar 7

Page 8: Red–black!trees! - Simon Fraser Universitymori/courses/cmpt225/slides/cmpt225_6re… · Definethe red+black!tree!properties!! Describe!and!implement!rotations!! Implement!red+black!tree!insertion!!

¡  The  black  height  of  a  node,  bh(v),  is  the  number  of  black  nodes  on  a  path  from  v  to  a  leaf  §  Without  counting  v  itself  §  Because  of  property  4  every  path  from  a  node  to  a  leaf  contains  the  same  number  of  black  nodes  

¡  The  height  of  a  node,  h(v),  is  the  number  of  nodes  on  the  longest  path  from  v  to  a  leaf  §  Without  counting  v  itself  §  From  property  3  a  red  node’s  children  must  be  black  ▪  So  h(v)  ≤  2(bh(v))  

October 2004 John Edgar 8

Page 9: Red–black!trees! - Simon Fraser Universitymori/courses/cmpt225/slides/cmpt225_6re… · Definethe red+black!tree!properties!! Describe!and!implement!rotations!! Implement!red+black!tree!insertion!!

¡  It  can  be  shown  that  a  tree  with  the  red-­‐black  structure  is  balanced  ¡  A  balanced  tree  has  no  path  from  the  root  to  a  leaf  that  is  

more  than  twice  as  long  as  any  other  such  path  ¡  Assume  that  a  tree  has  n  internal  nodes  

§  An  internal  node  is  a  non-­‐leaf  node,  and  the  leaf  nodes  are  imaginary  nodes  

§  A  red-­‐black  tree  has  ≥  2bh  –  1  internal  (real)  nodes  ▪  Can  be  proven  by  induction  (e.g.  Algorithms,  Cormen  et  al.)  

October 2004 John Edgar 9

Page 10: Red–black!trees! - Simon Fraser Universitymori/courses/cmpt225/slides/cmpt225_6re… · Definethe red+black!tree!properties!! Describe!and!implement!rotations!! Implement!red+black!tree!insertion!!

¡  Claim:  a  red-­‐black  tree  has  height,  h  ≤  2*log(n+1)  §  n  ≥  2bh  –  1  (see  above)  §  bh  ≥  h  /  2  (red  nodes  must  have  black  children)    §  n  ≥  2h/2  –  1  (replace  bh  with  h)  §  log(n  +  1)  ≥  h  /  2  (add  1,  log2  of  both  sides)  §  h  ≤  2*log(n  +  1)  (multiply  both  sides  by  2)  

October 2004 John Edgar 10

Page 11: Red–black!trees! - Simon Fraser Universitymori/courses/cmpt225/slides/cmpt225_6re… · Definethe red+black!tree!properties!! Describe!and!implement!rotations!! Implement!red+black!tree!insertion!!
Page 12: Red–black!trees! - Simon Fraser Universitymori/courses/cmpt225/slides/cmpt225_6re… · Definethe red+black!tree!properties!! Describe!and!implement!rotations!! Implement!red+black!tree!insertion!!

¡  An  item  must  be  inserted  into  a  red-­‐black  tree  at  the  correct  position  

¡  The  shape  of  a  tree  is  determined  by  §  The  values  of  the  items  inserted  into  the  tree  §  The  order  in  which  those  values  are  inserted  

¡  This  suggests  that  there  is  more  than  one  tree  (shape)  that  can  contain  the  same  values  

¡  A  tree’s  shape  can  be  altered  by  rotation  while  still  preserving  the  bst  property  §  Note:  only  applies  to  bst  with  no  duplicate  keys!  

October 2004 John Edgar 12

Page 13: Red–black!trees! - Simon Fraser Universitymori/courses/cmpt225/slides/cmpt225_6re… · Definethe red+black!tree!properties!! Describe!and!implement!rotations!! Implement!red+black!tree!insertion!!

October 2004 John Edgar 13

x  

y   z  

A   D  C  B  

Left  rotate(x)  

z  

y  

A  

D  

C  

B  

x  

Page 14: Red–black!trees! - Simon Fraser Universitymori/courses/cmpt225/slides/cmpt225_6re… · Definethe red+black!tree!properties!! Describe!and!implement!rotations!! Implement!red+black!tree!insertion!!

October 2004 John Edgar 14

x  

y   z  

A   D  C  B  

z  

y  

A  

D  

C  

B  

Right  rotate(z)  

x  

Page 15: Red–black!trees! - Simon Fraser Universitymori/courses/cmpt225/slides/cmpt225_6re… · Definethe red+black!tree!properties!! Describe!and!implement!rotations!! Implement!red+black!tree!insertion!!

October 2004 John Edgar 15

Left  rotation  of  32,  call  the  node  x  

47  

81  32  

13   40  

37   44  

Assign  a  pointer  to  x's  R  child  

temp  

Page 16: Red–black!trees! - Simon Fraser Universitymori/courses/cmpt225/slides/cmpt225_6re… · Definethe red+black!tree!properties!! Describe!and!implement!rotations!! Implement!red+black!tree!insertion!!

October 2004 John Edgar 16

47  

81  32  

13   40  

37   44  

temp  

Make  temp’s  L  child  x’s  R  child  

Detach  temp’s  L  child  

Left  rotation  of  32,  call  the  node  x  

Assign  a  pointer  to  x's  R  child  

Page 17: Red–black!trees! - Simon Fraser Universitymori/courses/cmpt225/slides/cmpt225_6re… · Definethe red+black!tree!properties!! Describe!and!implement!rotations!! Implement!red+black!tree!insertion!!

October 2004 John Edgar 17

47  

81  32  

13   40  

37   44  

temp  Make  x  temp's  L  child  

Make  temp  x's  parent's  child  

Make  temp’s  L  child  x’s  R  child  

Detach  temp’s  L  child  

Left  rotation  of  32,  call  the  node  x  

Assign  a  pointer  to  x's  R  child  

Page 18: Red–black!trees! - Simon Fraser Universitymori/courses/cmpt225/slides/cmpt225_6re… · Definethe red+black!tree!properties!! Describe!and!implement!rotations!! Implement!red+black!tree!insertion!!

October 2004 John Edgar 18

47  

81  40  

32   44  

13   37  

Left  rotation  of  32,  call  the  node  x  

Page 19: Red–black!trees! - Simon Fraser Universitymori/courses/cmpt225/slides/cmpt225_6re… · Definethe red+black!tree!properties!! Describe!and!implement!rotations!! Implement!red+black!tree!insertion!!

October 2004 John Edgar 19

47  

81  32  

13   40  

7   29   37  

temp  

Right  rotation  of  47,  call  the  node  x  

Assign  a  pointer  to  x's  L  child  

Page 20: Red–black!trees! - Simon Fraser Universitymori/courses/cmpt225/slides/cmpt225_6re… · Definethe red+black!tree!properties!! Describe!and!implement!rotations!! Implement!red+black!tree!insertion!!

October 2004 John Edgar 20

47  

81  32  

13   40  

7   29   37  

Make  temp’s  R  child  x’s  L  child  

Detach  temp’s  R  child  temp  

Right  rotation  of  47,  call  the  node  x  

Assign  a  pointer  to  x's  L  child  

Page 21: Red–black!trees! - Simon Fraser Universitymori/courses/cmpt225/slides/cmpt225_6re… · Definethe red+black!tree!properties!! Describe!and!implement!rotations!! Implement!red+black!tree!insertion!!

Right  rotation  of  47,  call  the  node  x  

October 2004 John Edgar 21

47  

81  32  

13   40  

7   29   37  

Make  x  temp's  L  child  temp  

Make  temp’s  R  child  x’s  L  child  

Detach  temp’s  R  child  

Assign  a  pointer  to  x's  L  child  

Page 22: Red–black!trees! - Simon Fraser Universitymori/courses/cmpt225/slides/cmpt225_6re… · Definethe red+black!tree!properties!! Describe!and!implement!rotations!! Implement!red+black!tree!insertion!!

October 2004 John Edgar 22

Make  temp  the  new  root  

temp  47  

32  

13  

7   40  29  

37  

81  

Right  rotation  of  47,  call  the  node  x  

Make  x  temp's  L  child  

Make  temp’s  R  child  x’s  L  child  

Detach  temp’s  R  child  

Assign  a  pointer  to  x's  L  child  

Page 23: Red–black!trees! - Simon Fraser Universitymori/courses/cmpt225/slides/cmpt225_6re… · Definethe red+black!tree!properties!! Describe!and!implement!rotations!! Implement!red+black!tree!insertion!!
Page 24: Red–black!trees! - Simon Fraser Universitymori/courses/cmpt225/slides/cmpt225_6re… · Definethe red+black!tree!properties!! Describe!and!implement!rotations!! Implement!red+black!tree!insertion!!

¡  Insert  as  for  a  binary  search  tree  §  Make  the  new  node  red  

October 2004 John Edgar 24

Page 25: Red–black!trees! - Simon Fraser Universitymori/courses/cmpt225/slides/cmpt225_6re… · Definethe red+black!tree!properties!! Describe!and!implement!rotations!! Implement!red+black!tree!insertion!!

October 2004 John Edgar 25

Insert  65  47  

71  32  

93  

Page 26: Red–black!trees! - Simon Fraser Universitymori/courses/cmpt225/slides/cmpt225_6re… · Definethe red+black!tree!properties!! Describe!and!implement!rotations!! Implement!red+black!tree!insertion!!

October 2004 John Edgar 26

Insert  65  47  

71  32  

65   93  

Page 27: Red–black!trees! - Simon Fraser Universitymori/courses/cmpt225/slides/cmpt225_6re… · Definethe red+black!tree!properties!! Describe!and!implement!rotations!! Implement!red+black!tree!insertion!!

¡  Insert  as  for  a  binary  search  tree  §  Make  the  new  node  red  

¡  What  can  go  wrong?  (see  slide  6)  §  The  only  property  that  can  be  violated  is  that  both  a  red  node’s  children  are  black  (its  parent  may  be  red)  

¡  So,  after  inserting,  fix  the  tree  by  re-­‐colouring  nodes  and  performing  rotations  

October 2004 John Edgar 27

Page 28: Red–black!trees! - Simon Fraser Universitymori/courses/cmpt225/slides/cmpt225_6re… · Definethe red+black!tree!properties!! Describe!and!implement!rotations!! Implement!red+black!tree!insertion!!

¡  The  fixing  of  the  tree  remedies  the  problem  of  two  consecutive  red  nodes  §  There  are  a  number  of  cases  (that’s  what  is  next)  

¡  It  is  iterative  (or  recursive)  and  pushes  this  problem  one  step  up  the  tree  at  each  step  §  I.e.  if  the  consecutive  red  nodes  are  at  level  d,  at  the  next  step  they  are  at  d-­‐1  

§  This  is  why  it  turns  out  to  be  O(log  n)  ▪ We  won’t  go  into  the  analysis  

October 2004 John Edgar 28

Page 29: Red–black!trees! - Simon Fraser Universitymori/courses/cmpt225/slides/cmpt225_6re… · Definethe red+black!tree!properties!! Describe!and!implement!rotations!! Implement!red+black!tree!insertion!!

¡  Need  to  fix  tree  if  new  node’s  parent  is  red  ¡  Case  I  for  fixing:  ¡  If  parent  and  uncle  are  both  red  

§  Then  colour  them  black  §  And  colour  the  grandparent  red  ▪  It  must  have  been  black  beforehand,  why?  

October 2004 John Edgar 29

Page 30: Red–black!trees! - Simon Fraser Universitymori/courses/cmpt225/slides/cmpt225_6re… · Definethe red+black!tree!properties!! Describe!and!implement!rotations!! Implement!red+black!tree!insertion!!

October 2004 John Edgar 30

Insert  65  47  

71  32  

65   93  

Insert  82  

Page 31: Red–black!trees! - Simon Fraser Universitymori/courses/cmpt225/slides/cmpt225_6re… · Definethe red+black!tree!properties!! Describe!and!implement!rotations!! Implement!red+black!tree!insertion!!

October 2004 John Edgar 31

82  

47  

71  32  

65   93  

Insert  82  

Insert  65  

Page 32: Red–black!trees! - Simon Fraser Universitymori/courses/cmpt225/slides/cmpt225_6re… · Definethe red+black!tree!properties!! Describe!and!implement!rotations!! Implement!red+black!tree!insertion!!

71  71  

93  93  65  65  

October 2004 John Edgar 32

82  

47  

32  

Insert  82  

change  nodes’  colours  

Insert  65  

Page 33: Red–black!trees! - Simon Fraser Universitymori/courses/cmpt225/slides/cmpt225_6re… · Definethe red+black!tree!properties!! Describe!and!implement!rotations!! Implement!red+black!tree!insertion!!

¡  Need  to  fix  tree  if  new  node’s  parent  is  red  ¡  Case  II  for  fixing:  ¡  If  parent  is  red  but  uncle  is  black  

§  Need  to  do  some  tree  rotations  to  fix  it  

October 2004 John Edgar 33

Page 34: Red–black!trees! - Simon Fraser Universitymori/courses/cmpt225/slides/cmpt225_6re… · Definethe red+black!tree!properties!! Describe!and!implement!rotations!! Implement!red+black!tree!insertion!!

Insert  87  

October 2004 John Edgar 34

65   93  

71  

82  

47  

32  

Insert  82  

Insert  65  

Page 35: Red–black!trees! - Simon Fraser Universitymori/courses/cmpt225/slides/cmpt225_6re… · Definethe red+black!tree!properties!! Describe!and!implement!rotations!! Implement!red+black!tree!insertion!!

October 2004 John Edgar 35

93  65  

71  

82  

47  

32  

87  

Insert  87  

Insert  82  

Insert  65  

Page 36: Red–black!trees! - Simon Fraser Universitymori/courses/cmpt225/slides/cmpt225_6re… · Definethe red+black!tree!properties!! Describe!and!implement!rotations!! Implement!red+black!tree!insertion!!

October 2004 John Edgar 36

93  65  

71  

82  

47  

32  

87  

Insert  87  

Insert  82  

Insert  65  

Page 37: Red–black!trees! - Simon Fraser Universitymori/courses/cmpt225/slides/cmpt225_6re… · Definethe red+black!tree!properties!! Describe!and!implement!rotations!! Implement!red+black!tree!insertion!!

October 2004 John Edgar 37

93  65  

71  

87  

47  

32  

82  

Insert  87  

Insert  82  

Insert  65  

Page 38: Red–black!trees! - Simon Fraser Universitymori/courses/cmpt225/slides/cmpt225_6re… · Definethe red+black!tree!properties!! Describe!and!implement!rotations!! Implement!red+black!tree!insertion!!

93  93  

87  87  

October  2004   John  Edgar   38  

65  

47  

32  

82  

71  

change  nodes’  colours  

Insert  87  

Insert  82  

Insert  65  

Page 39: Red–black!trees! - Simon Fraser Universitymori/courses/cmpt225/slides/cmpt225_6re… · Definethe red+black!tree!properties!! Describe!and!implement!rotations!! Implement!red+black!tree!insertion!!

October 2004 John Edgar 39

87  

93  

65  

47  

32  

82  

71  Insert  87  

Insert  82  

Insert  65  

Page 40: Red–black!trees! - Simon Fraser Universitymori/courses/cmpt225/slides/cmpt225_6re… · Definethe red+black!tree!properties!! Describe!and!implement!rotations!! Implement!red+black!tree!insertion!!

¡ Why  were  these  rotations  performed?  ¡  First  rotation  made  the  two  red  nodes  left  children  of  their  parents  §  This  rotation  isn’t  performed  if  this  is  already  the  case  

§  Note  that  grandparent  must  be  a  black  node  ¡  Second  rotation  and  subsequent  recolouring  fixes  the  tree  

October 2004 John Edgar 40

Page 41: Red–black!trees! - Simon Fraser Universitymori/courses/cmpt225/slides/cmpt225_6re… · Definethe red+black!tree!properties!! Describe!and!implement!rotations!! Implement!red+black!tree!insertion!!

¡  Full  details  require  a  few  cases  §  See  link  to  example  code  snippets  at  end  §  Understand  the  application  of  tree  rotations  

October 2004 John Edgar 41

Page 42: Red–black!trees! - Simon Fraser Universitymori/courses/cmpt225/slides/cmpt225_6re… · Definethe red+black!tree!properties!! Describe!and!implement!rotations!! Implement!red+black!tree!insertion!!
Page 43: Red–black!trees! - Simon Fraser Universitymori/courses/cmpt225/slides/cmpt225_6re… · Definethe red+black!tree!properties!! Describe!and!implement!rotations!! Implement!red+black!tree!insertion!!

¡  Red-­‐black  trees  are  balanced  binary  search  trees  

¡  Augment  each  node  with  a  colour  § Maintaining  relationships  between  node  colours  maintains  balance  of  tree  

¡  Important  operation  to  understand:  rotation  § Modify  tree  but  keep  binary  search  tree  property  (ordering  of  nodes)  

October 2004 John Edgar 43

Page 44: Red–black!trees! - Simon Fraser Universitymori/courses/cmpt225/slides/cmpt225_6re… · Definethe red+black!tree!properties!! Describe!and!implement!rotations!! Implement!red+black!tree!insertion!!

¡  For  implementation  details,  please  see:  http://en.wikipedia.org/wiki/Red-­‐black_tree  

(see  “Operations”)  

October 2004 John Edgar 44