百科问答小站 logo
百科问答小站 font logo



红黑树的实现可以有多精简(各种语言随意)? 第1页

  

user avatar   luo-bi-cheng 网友的相关建议: 
      

20行实现一个完整的红黑树的话,还是太困难了。如果不考虑删除操作的话,可以参考

Purely Functional Data Structures

一书当中3.3节介绍的用Haskell实现的一个红黑树。

       module RedBlackSet( empty                   , member                   , insert                   ) where  data Tree a = Empty             | T Color (Tree a) a (Tree a)  data Color  = R             | B  empty :: Ord a => Tree a empty = Empty  member :: Ord a => Tree a -> a -> Bool member (T _ left e right) x | x == e = True                             | x < e  = member left x                             | x > e  = member right x member Empty _                       = False  insert :: Ord a => a -> Tree a -> Tree a insert x s = let T _ a y b = ins s              in  T B a y b         where           ins s'@(T color a' y' b')                     | x < y'    = build color (ins a') y' b'                     | x > y'    = build color a' y' (ins b')                     | otherwise = s'           ins Empty             = T R Empty x Empty  build :: Color -> Tree a -> a -> Tree a -> Tree a build B (T R (T R a x b) y c) z d = T R (T B a x b) y (T B c z d) build B (T R a x (T R b y c)) z d = T R (T B a x b) y (T B c z d) build B a x (T R (T R b y c) z d) = T R (T B a x b) y (T B c z d) build B a x (T R b y (T R c z d)) = T R (T B a x b) y (T B c z d) build color left x right          = T color left x right      

看了下,大概30度行。上述实现直接搬运自

The easy way to implement a Red-Black tree

。如果想要再在这个基础上增加删除操作的话,可以参阅

cs.kent.ac.uk/people/st

,大概80行左右。

欢迎关注:




  

相关话题

  数据结构与算法中,树一般会应用在哪些方面?为什么? 
  为什么微软建议超过64字节不要使用结构? 
  如何评价Google 在TensorFlow 中引入的bfloat16 数据类型? 
  什么才算是真正的编程能力? 
  红黑树的实现可以有多精简(各种语言随意)? 
  100个金币,只有1个略重,其余99个一样重。给你一个天平,最少称几次能确保找出那个略重的? 
  对于编程思想和能力有重大提升的书有哪些? 
  大二学生,计算机科学与技术专业,学到数据结构和组原有点心态爆炸了,看不懂敲不出代码,还有救吗 ? 
  很多高效排序算法的代价是 nlogn,难道这是排序算法的极限了吗? 
  N 个乒乓球中有一个和其他的质量不同,用天平最少几次一定能称出来? 

前一个讨论
你写过哪些比较酷的十行以内的 Matlab 代码?
下一个讨论
高校规定学生不删游戏就没收电脑,你怎么看?





© 2025-04-16 - tinynew.org. All Rights Reserved.
© 2025-04-16 - tinynew.org. 保留所有权利