๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

tree4

๋ฐฑ์ค€ - [BOJ 22856] ํŠธ๋ฆฌ ์ˆœํšŒ ๋ฌธ์ œ๋…ธ๋“œ๊ฐ€ N๊ฐœ์ธ ์ด์ง„ ํŠธ๋ฆฌ๊ฐ€ ์žˆ๋‹ค. ํŠธ๋ฆฌ๋ฅผ ์ค‘์œ„ ์ˆœํšŒ์™€ ์œ ์‚ฌํ•˜๊ฒŒ ์ˆœํšŒํ•˜๋ ค๊ณ  ํ•œ๋‹ค. ์ด๋ฅผ ์œ ์‚ฌ ์ค‘์œ„ ์ˆœํšŒ๋ผ๊ณ  ํ•˜์ž.์ˆœํšŒ์˜ ์‹œ์ž‘์€ ํŠธ๋ฆฌ์˜ ๋ฃจํŠธ์ด๊ณ  ์ˆœํšŒ์˜ ๋์€ ์ค‘์œ„ ์ˆœํšŒํ•  ๋•Œ ๋งˆ์ง€๋ง‰ ๋…ธ๋“œ์ด๋‹ค. ์ด๋•Œ ๋ฃจํŠธ ๋…ธ๋“œ๋Š” ํ•ญ์ƒ 1๋ฒˆ ๋…ธ๋“œ์ด๋‹ค.์œ ์‚ฌ ์ค‘์œ„ ์ˆœํšŒ๋Š” ๋ฃจํŠธ ๋…ธ๋“œ์—์„œ ์‹œ์ž‘ํ•˜๋ฉฐ, ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ง„ํ–‰๋œ๋‹ค.ํ˜„์žฌ ์œ„์น˜ํ•œ ๋…ธ๋“œ์˜ ์™ผ์ชฝ ์ž์‹ ๋…ธ๋“œ๊ฐ€ ์กด์žฌํ•˜๊ณ  ์•„์ง ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š์•˜๋‹ค๋ฉด, ์™ผ์ชฝ ์ž์‹ ๋…ธ๋“œ๋กœ ์ด๋™ํ•œ๋‹ค.๊ทธ๋ ‡์ง€ ์•Š๊ณ  ํ˜„์žฌ ์œ„์น˜ํ•œ ๋…ธ๋“œ์˜ ์˜ค๋ฅธ์ชฝ ์ž์‹ ๋…ธ๋“œ๊ฐ€ ์กด์žฌํ•˜๊ณ  ์•„์ง ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š์•˜๋‹ค๋ฉด, ์˜ค๋ฅธ์ชฝ ์ž์‹ ๋…ธ๋“œ๋กœ ์ด๋™ํ•œ๋‹ค.๊ทธ๋ ‡์ง€ ์•Š๊ณ  ํ˜„์žฌ ๋…ธ๋“œ๊ฐ€ ์œ ์‚ฌ ์ค‘์œ„ ์ˆœํšŒ์˜ ๋์ด๋ผ๋ฉด, ์œ ์‚ฌ ์ค‘์œ„ ์ˆœํšŒ๋ฅผ ์ข…๋ฃŒํ•œ๋‹ค.๊ทธ๋ ‡์ง€ ์•Š๊ณ  ๋ถ€๋ชจ ๋…ธ๋“œ๊ฐ€ ์กด์žฌํ•œ๋‹ค๋ฉด, ๋ถ€๋ชจ ๋…ธ๋“œ๋กœ ์ด๋™ํ•œ๋‹ค.์œ ์‚ฌ ์ค‘์œ„ ์ˆœํšŒ๋ฅผ ์ข…๋ฃŒํ•  ๋•Œ๊นŒ์ง€ 1 ~ 4๋ฅผ ๋ฐ˜๋ณตํ•œ๋‹ค.์œ„ ๊ทธ๋ฆผ์— ์žˆ.. 2024. 7. 8.
[Java] Binary Tree Binary Tree๋Š” ํŠธ๋ฆฌ๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ๋น„์„ ํ˜•์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ์ด๋‹ค.์•ž์„œ ํฌ์ŠคํŒ…์—์„œ BST(Binary Search Tree)์— ๋Œ€ํ•ด์„œ ์„ค๋ช…ํ–ˆ๋Š”๋ฐ BST๋„ ์ด์ง„ ํŠธ๋ฆฌ๋ฅผ ๊ธฐ๋ฐ˜ํ•œ ์ž๋ฃŒ๊ตฌ์กฐ์ด๋‹ค. ์™œ Binary Tree๋ฅผ ์‚ฌ์šฉํ• ๊นŒ?Tree Post์—์„œ๋„ ์„ค๋ช…ํ–ˆ๋Š”๋ฐ ์ผ๋ฐ˜ DAG์™€ ๊ฐ™์€ Tree๋Š” ํšจ์œจ์„ฑ ์ธก๋ฉด์—์„œ ๋„ˆ๋ฌด ๋ถ€์กฑํ•˜๋‹ค. ๊ทธ์ € Graph์™€ ๋‹ค๋ฆ„์ด ์—†๋‹ค.๊ทธ๋ž˜์„œ ์‹ค์ œ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ๋ฅผ ํ•˜๊ธฐ ์œ„ํ•ด Binary Tree๋กœ ํšจ์œจ์„ฑ์„ ๊ทน๋Œ€ํ™”ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ฑ„ํƒํ•œ ๊ฒƒ์ด๋‹ค. ํฌ๊ฒŒ Binary Tree์˜ ๋‘ ์ข…๋ฅ˜๋ฅผ ์•Œ์•„๋ณด์ž. 1. ์™„์ „ ์ด์ง„ ํŠธ๋ฆฌ2. ํŽธํ–ฅ ํŠธ๋ฆฌ ์ด ์™ธ์—๋„ ๋งŽ์ง€๋งŒ Binary Tree์˜ ํ•ต์‹ฌ์„ ์„ค๋ช…ํ•˜๊ธฐ์— ๋‘ ๊ฐ€์ง€๊ฐ€ ์ตœ๊ณ ์ธ ๊ฒƒ ๊ฐ™๋‹ค. ์œ„ ๋‘๊ฐ€์ง€ ๊ฐœ๋…์„ ์–ธ๊ธ‰ํ•œ ์ด์œ ๋Š” BST์˜ ๋ฌธ์ œ์  ๋•Œ๋ฌธ์ด๋‹ค.์•ž์„œ ์ž‘์„ฑํ•œ B.. 2024. 7. 8.
[Java] Binary Search Tree ์•ž ํฌ์ŠคํŒ…์—์„œ ์ž‘์„ฑํ•œ Tree์˜ ๋น„ํšจ์œจ์ ์ธ ๋ฌธ์ œ๋ฅผ ๊ฐœ์„ ํ•˜๊ธฐ ์œ„ํ•ด ์ƒ๊ธด ์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ๋‹ค.ํŠธ๋ฆฌ๋Š” ์—ฌ๋Ÿฌ ์ž์‹์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์ง€๋งŒ ์ด์ง„ ๊ฒ€์ƒ‰ ํŠธ๋ฆฌ์—์„œ๋Š” Binary Tree์˜ ๊ฐœ๋…์„ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์—์ž์‹์ด Left, Right๋งŒ ์กด์žฌํ•œ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด Log_2 (N) ๋ฒˆ๋งŒ์— ๋ชจ๋“  ์ˆ˜ํ–‰์„ ๋๋‚ผ ์ˆ˜ ์žˆ๋‹ค. ๋˜, inorder๋ฅผ ์ˆ˜ํ–‰ ์‹œ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ๋œ ๊ฒฐ๊ณผ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค. package com.study.datastructrue.nonlinear.binarysearchtree;public class Node { int value; Node left; Node right; public Node(int value) { this.value = value; left = null;.. 2024. 7. 8.
[Java] Tree ํŠธ๋ฆฌ ์ž๋ฃŒ๊ตฌ์กฐ์˜ ์ข…๋ฅ˜ : Tree, Binary Tree, Binary Serach Tree, Balanced Binary Serach Tree, Heap, Trie์ด๋ฒˆ ํฌ์ŠคํŠธ์—์„œ๋Š” ๊ธฐ๋ณธ์ ์ธ Tree์— ๋Œ€ํ•ด์„œ๋งŒ ์ž‘์„ฑํ•ด๋ณด์ž. Tree๋ž€ ? Node์™€ Edge๋กœ ๊ตฌ์„ฑ๋œ ๋ฐฉํ–ฅ์ด ์กด์žฌํ•˜๋Š” ๋น„์ˆœํ™˜ Graph์˜ ํ•œ ์ข…๋ฅ˜์ด๋‹ค. ๊ทธ๋ž˜์„œ DAG(Directed Acyclic Graphs)๋ผ๊ณ ๋„ ํ•œ๋‹ค.๊ทธ๋Ÿผ Graph๋กœ ๋ถ„๋ฅ˜ํ•˜๋ฉด ๋˜์ง€ ์™œ Tree๋ƒ๋Š” ์˜์‹ฌ์„ ํ•˜๊ฒŒ ๋œ๋‹ค.Tree๋Š” Graph์—์„œ ๋ช‡๊ฐ€์ง€ ํŠน์„ฑ์„ ๋” ๊ฐ€์ง„๋‹ค. 1. ๋ฃจํŠธ ๋…ธ๋“œ๊ฐ€ ํ•˜๋‚˜ ์กด์žฌํ•œ๋‹ค.2. ๋ถ€๋ชจ ๋…ธ๋“œ๋Š” ํ•˜๋‚˜๋ฐ–์— ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค.3. ๋…ธ๋“œ๋Š” 0๊ฐœ ์ด์ƒ์˜ ์ž์‹์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.4. ์ž์‹์ด 0๊ฐœ์ธ ๊ฒฝ์šฐ ๋‹จ๋ง๋…ธ๋“œ(Leaf Node)๋ผ๊ณ  ํ•œ๋‹ค.5.. ์œ„ ํŠน์„ฑ์„ ์ง€ํ‚ค๋Š” .. 2024. 7. 7.