DevLog ๐Ÿ“จ/DataStructure 2

[DevLog][DS]Red Black Tree: Operation

Red Black Tree 1. Concept [revisited] ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์„ฑ์งˆ์„ ๋งŒ์กฑํ•˜๋Š” ์ด์ง„ ๊ฒ€์ƒ‰ ํŠธ๋ฆฌ BST ๋ชจ๋“  ๋…ธ๋“œ๋Š” red or black root ๋…ธ๋“œ๋Š” black leaf (nil)๋…ธ๋“œ๋Š” black red ๋…ธ๋“œ์˜ ์ž์‹์€ black ํ•œ ๋…ธ๋“œ์—์„œ leaf(nil)๋กœ ๊ฐ€๋Š” ๊ฐ ๊ฒฝ๋กœ์— ํฌํ•จ๋œ black ๋…ธ๋“œ์˜ ๊ฐœ์ˆ˜๋Š” ๋ชจ๋‘ ๊ฐ™๋‹ค. 2. Operations typedef enum {RBTREE_BLACK, RBTREE_RED} color_t; typedef int key_t; typedef struct node_t { key_t key; color_t color; struct node_t* parent; struct node_t* left; struct node_t* right; } typede..

[DevLog][DS] Red Black Tree: concept

Red Black Tree ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์„ฑ์งˆ์„ ๋งŒ์กฑํ•˜๋Š” ์ด์ง„ ๊ฒ€์ƒ‰ ํŠธ๋ฆฌ ๋ชจ๋“  ๋…ธ๋“œ๋Š” ๋ ˆ๋“œ๋‚˜ ๋ธ”๋ž™ ๋ฃจํŠธ๋Š” ๋ธ”๋ž™ ๋ฆฌํ”„(NIL)๋Š” ๋ธ”๋ž™ ๋ ˆ๋“œ ๋…ธ๋“œ์˜ ์ž์‹์€ ๋ชจ๋‘ ๋ธ”๋ž™ ํ•œ ๋…ธ๋“œ๋กœ๋ถ€ํ„ฐ ๊ทธ ์ž์†์ธ ๋ฆฌํ”„ ๋…ธ๋“œ๋กœ๊นŒ์ง€ ๊ฐ€๋Š” ๊ฒฝ๋กœ์— ํฌํ•จ๋œ ๋ธ”๋ž™ ๋…ธ๋“œ์˜ ๊ฐœ์ˆ˜๊ฐ€ ๊ฐ™์Œ ๋ ˆ๋“œ ๋ธ”๋ž™ ํŠธ๋ฆฌ๋Š” ์ด์ง„ ๊ฒ€์ƒ‰ ํŠธ๋ฆฌ๋กœ์„œ, ๊ฐ ๋…ธ๋“œ ๋‹น ํ•œ ๋น„ํŠธ์˜ ์ถ”๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์— ๋…ธ๋“œ์˜ ์ƒ‰๊น”(๋ ˆ๋“œ, ๋ธ”๋ž™)์„ ์ €์žฅํ•œ๋‹ค. ๋ฃจํŠธ์—์„œ ๋ฆฌํ”„๊นŒ์ง€์˜ ๊ฒฝ๋กœ์— ๋‚˜ํƒ€๋‚˜๋Š” ๋…ธ๋“œ์˜ ์ƒ‰์„ ์ œํ•œํ•จ์œผ๋กœ์จ ๊ทธ๋Ÿฌํ•œ ๊ฒฝ๋กœ ์ค‘ ์–ด๋– ํ•œ ๊ฒƒ๋„ ๋‹ค๋ฅธ ๊ฒƒ๋ณด๋‹ค ๋‘ ๋ฐฐ ์ด์ƒ ๊ธธ์ง€ ์•Š์Œ์„ ๋ณด์žฅํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋กœ์จ ๊ทผ์‚ฌ์ ์œผ๋กœ ๊ท ํ˜•์„ ์ด๋ฃฌ ํŠธ๋ฆฌ ๊ฐ€ ๋œ๋‹ค. ๊ฒฝ๊ณ„๋…ธ๋“œ sentinel ๊ฐ ๋…ธ๋“œ๋งˆ๋‹ค ๋ฆฌํ”„๋…ธ๋“œ๋ฅผ ๋ชจ๋‘ NIL๋กœ ๋ถ™์—ฌ์ฃผ๋Š” ๋Œ€์‹ , ์ด๋ฅผ ํ‘œํ˜„ํ•˜๋Š” ํ•˜๋‚˜์˜ ๋…ธ๋“œ๋งŒ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ ์ด๋ฅผ ๊ฒฝ๊ณ„๋…ธ๋“œ(sentinel)..