๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
์•Œ๊ณ ๋ฆฌ์ฆ˜/์ž๋ฃŒ๊ตฌ์กฐ

[Java] Binary Tree

by ๐Ÿณ Laboon 2024. 7. 8.

Binary Tree๋Š” ํŠธ๋ฆฌ๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ๋น„์„ ํ˜•์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ์ด๋‹ค.

์•ž์„œ ํฌ์ŠคํŒ…์—์„œ BST(Binary Search Tree)์— ๋Œ€ํ•ด์„œ ์„ค๋ช…ํ–ˆ๋Š”๋ฐ BST๋„ ์ด์ง„ ํŠธ๋ฆฌ๋ฅผ ๊ธฐ๋ฐ˜ํ•œ ์ž๋ฃŒ๊ตฌ์กฐ์ด๋‹ค.

 

์™œ Binary Tree๋ฅผ ์‚ฌ์šฉํ• ๊นŒ?

Tree Post์—์„œ๋„ ์„ค๋ช…ํ–ˆ๋Š”๋ฐ ์ผ๋ฐ˜ DAG์™€ ๊ฐ™์€ Tree๋Š” ํšจ์œจ์„ฑ ์ธก๋ฉด์—์„œ ๋„ˆ๋ฌด ๋ถ€์กฑํ•˜๋‹ค. ๊ทธ์ € Graph์™€ ๋‹ค๋ฆ„์ด ์—†๋‹ค.

๊ทธ๋ž˜์„œ ์‹ค์ œ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ๋ฅผ ํ•˜๊ธฐ ์œ„ํ•ด Binary Tree๋กœ ํšจ์œจ์„ฑ์„ ๊ทน๋Œ€ํ™”ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ฑ„ํƒํ•œ ๊ฒƒ์ด๋‹ค.

 

ํฌ๊ฒŒ Binary Tree์˜ ๋‘ ์ข…๋ฅ˜๋ฅผ ์•Œ์•„๋ณด์ž.

 

1. ์™„์ „ ์ด์ง„ ํŠธ๋ฆฌ

2. ํŽธํ–ฅ ํŠธ๋ฆฌ 

์ด ์™ธ์—๋„ ๋งŽ์ง€๋งŒ Binary Tree์˜ ํ•ต์‹ฌ์„ ์„ค๋ช…ํ•˜๊ธฐ์— ๋‘ ๊ฐ€์ง€๊ฐ€ ์ตœ๊ณ ์ธ ๊ฒƒ ๊ฐ™๋‹ค.

 

์œ„ ๋‘๊ฐ€์ง€ ๊ฐœ๋…์„ ์–ธ๊ธ‰ํ•œ ์ด์œ ๋Š” BST์˜ ๋ฌธ์ œ์  ๋•Œ๋ฌธ์ด๋‹ค.

์•ž์„œ ์ž‘์„ฑํ•œ BST ์ฝ”๋“œ์—์„œ ์ž‘์€ ๊ฐ’์€ ์™ผ์ชฝ, ํฐ ๊ฐ’์€ ์˜ค๋ฅธ์ชฝ์—์„œ sub tree๋ฅผ ์ƒ์„ฑํ•˜๋ฉด์„œ ์ž˜ ์ •๋ฆฌ๊ฐ€ ๋˜์–ด์žˆ์—ˆ๋‹ค.

ํŽธํ–ฅํŠธ๋ฆฌ

๋งŒ์•ฝ, ๊ทธ๋ฆผ์ฒ˜๋Ÿผ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ๋งŒ ๋ฐ์ดํ„ฐ๋ฅผ ์ž…๋ ฅํ•œ๋‹ค๋ฉด? ํŽธํ–ฅํŠธ๋ฆฌ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

๋ฐ์ดํ„ฐ๊ฐ€ 100๋งŒ๊ฐœ๊ฐ€ ์˜ค๋ฆ„์ฐจ์ˆœ์ผ ๋•Œ, Log_2(100๋งŒ) ์—์„œ ์„ ํ˜•ํƒ์ƒ‰์œผ๋กœ ๋ฐ”๋€๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

์•ฝ 50,000๋งŒ ๋ฐฐ ๋А๋ ค์ง„๋‹ค. ๋ฌผ๋ก  ๋ฐ์ดํ„ฐ๊ฐ€ ๋” ๋งŽ์•„์งˆ์ˆ˜๋ก ๋” ๋А๋ ค์งˆ ๊ฒƒ์ด๋‹ค. ์ด๋Ÿฐ ๋ฌธ์ œ๊ฐ€ BST์—์„œ ๋ฐœ์ƒํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

 

์‹ค์ œ๋กœ ์ด๊ฒƒ์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ• ์ค‘ ํ•˜๋‚˜๊ฐ€ ์™„์ „ ์ด์ง„ํŠธ๋ฆฌ๋ฅผ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์ธ๋ฐ ์™ผ์ชฝ ์‚ฌ์ง„์—์„œ 4๋ฅผ ์ง€์› ๋”๋‹ˆ ์™„์ „ ์ด์ง„ํŠธ๋ฆฌ๊ฐ€ ์œ ์ง€๋˜์ง€ ์•Š๊ณ  ์žˆ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ์ด๊ฒƒ์„ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์ž๊ฐ€๊ท ํ˜•ํŠธ๋ฆฌ (Self-Balancing Tree) ์ด๋ฉฐ ๋Œ€ํ‘œ์ ์œผ๋กœ Red-Black Tree, AVL Tree๊ฐ€ ์กด์žฌํ•œ๋‹ค.

 

์ด ์ž๊ฐ€๊ท ํ˜• ํŠธ๋ฆฌ๋ฅผ ์ด์šฉํ•œ ๊ฒƒ์ด Java์˜ TreeSet๊ณผ TreeMap ์ธ๋ฐ ์‹œ๊ฐ„์ด ๋˜๋ฉด ํ•œ ๋ฒˆ ์ž‘์„ฑํ•ด๋ณด์ž...

 

๋ฒˆ์™ธ๋กœ Binary Tree์—๋Š” ๋ฌธ์ž์—ด ๊ฒ€์ƒ‰์„ ์œ„ํ•œ Trie, ์ตœ์†Ÿ๊ฐ’๊ณผ ์ตœ๋Œ“๊ฐ’ ๊ฒ€์ƒ‰์— ํšจ์œจ์ ์ธ Heap์ด๋ผ๋Š” ์ž๋ฃŒ๊ตฌ์กฐ ๋˜ํ•œ ์กด์žฌํ•œ๋‹ค.