๐Ÿฅž BE
home

938_Range Sum of BST

๋‹ด๋‹น์ž
์™„๋ฃŒ ์—ฌ๋ถ€
Solved
์š”์•ฝ
๋‚ ์งœ
2024/08/01
ํƒœ๊ทธ
ํŠธ๋ฆฌ
์ด์ง„ํƒ์ƒ‰
DFS
BFS
๋‚œ์ด๋„
Easy
์ถœ์ฒ˜
LeetCode

์ฝ”๋“œ

class Solution { public int rangeSumBSTDFS(TreeNode root, int low, int high) { // ํ•˜์œ„ ๋…ธ๋“œ ์—†์œผ๋ฉด ์ข…๋ฃŒ if (root == null) { return 0; } // ํ˜„์žฌ ๋…ธ๋“œ์˜ ๊ฐ’์ด high๋ณด๋‹ค ํฌ๋‹ค๋ฉด, ์˜ค๋ฅธ์ชฝ ์„œ๋ธŒํŠธ๋ฆฌ๋ฅผ ํƒ์ƒ‰ํ•  ํ•„์š” ์—†์Œ if (root.val > high) { return rangeSumBST(root.left, low, high); } // ํ˜„์žฌ ๋…ธ๋“œ์˜ ๊ฐ’์ด low๋ณด๋‹ค ์ž‘๋‹ค๋ฉด, ์™ผ์ชฝ ์„œ๋ธŒํŠธ๋ฆฌ๋ฅผ ํƒ์ƒ‰ํ•  ํ•„์š” ์—†์Œ if (root.val < low) { return rangeSumBST(root.right, low, high); } // ํ˜„์žฌ ๋…ธ๋“œ์˜ ๊ฐ’์ด [low, high] ๋ฒ”์œ„์— ์žˆ๋Š” ๊ฒฝ์šฐ: // ํ˜„์žฌ ๋…ธ๋“œ์˜ ๊ฐ’์„ ๋”ํ•˜๊ณ , ์™ผ์ชฝ ๋ฐ ์˜ค๋ฅธ์ชฝ ์„œ๋ธŒํŠธ๋ฆฌ ๋ชจ๋‘ ํƒ์ƒ‰ return root.val + rangeSumBST(root.left, low, high) + rangeSumBST(root.right, low, high); } }
Java
๋ณต์‚ฌ
class Solution { public int rangeSumBSTBFS(TreeNode root, int low, int high) { if (root == null) { return 0; } int sum = 0; Deque<TreeNode> queue = new ArrayDeque<>(); // BFS๋Š” ์‹œ์ž‘ ๋…ธ๋“œ๋ฅผ ๋ฏธ๋ฆฌ ํ์— ์ถ”๊ฐ€ํ•˜๊ณ  ํƒ์ƒ‰ ์‹œ์ž‘. queue.add(root); while (!queue.isEmpty()) { // ์ตœ์ƒ์œ„ ๋…ธ๋“œ๋ถ€ํ„ฐ ํƒ์ƒ‰ ์‹œ์ž‘ TreeNode node = queue.poll(); if (node != null) { // ๋ฒ”์œ„ ์กฐ๊ฑด ๋งŒ์กฑํ•˜๋ฉด ํ•ฉ์‚ฐํ•ด์„œ ๊ฒฐ๊ณผ๊ฐ’์— ์ถ”๊ฐ€ if (node.val >= low && node.val <= high) { sum += node.val; } // ํ˜„์žฌ ๋…ธ๋“œ์˜ ๊ฐ’์ด low๋ณด๋‹ค ํฌ๋‹ค๋ฉด, ์˜ค๋ฅธ์ชฝ ์„œ๋ธŒํŠธ๋ฆฌ๋ฅผ ํƒ์ƒ‰ํ•  ํ•„์š” ์—†์Œ if (node.val > low) { queue.add(node.left); } // ํ˜„์žฌ ๋…ธ๋“œ์˜ ๊ฐ’์ด high๋ณด๋‹ค ์ž‘๋‹ค๋ฉด, ์™ผ์ชฝ ์„œ๋ธŒํŠธ๋ฆฌ๋ฅผ ํƒ์ƒ‰ํ•  ํ•„์š” ์—†์Œ if (node.val < high) { queue.add(node.right); } } } return sum; } }
Java
๋ณต์‚ฌ

๋ฌธ์ œ ํ•ด๊ฒฐ ์•„์ด๋””์–ด

์žฌ๊ท€๋ฅผ ํ™œ์šฉํ•œ DFS ๊ตฌ์กฐ๋กœ ์กฐ๊ฑด์— ๋งž๋Š” ๋…ธ๋“œ๋ฅผ ํƒ์ƒ‰ํ•˜๊ฑฐ๋‚˜, BFS์˜ ๋ฐ˜๋ณต ๊ตฌ์กฐ๋ฅผ ํ™œ์šฉํ•ด์„œ ์กฐ๊ฑด์— ๋งž๋Š” ๊ฒฐ๊ณผ๋ฅผ ๊ตฌํ•œ๋‹ค.