Skip to content

Conversation

@heony704
Copy link
Contributor

๐Ÿ“Œ ํ‘ผ ๋ฌธ์ œ


๐Ÿ“ ๊ฐ„๋‹จํ•œ ํ’€์ด ๊ณผ์ •

102. Binary Tree Level Order Traversal

ํŠธ๋ฆฌ๋ฅผ root์—์„œ๋ถ€ํ„ฐ ํƒ์ƒ‰ํ•˜๋ฉด์„œ, ๋ ˆ๋ฒจ๋งˆ๋‹ค ๋…ธ๋“œ๋“ค์„ ์ €์žฅํ•ด ๋ ˆ๋ฒจ ๋ณ„ ๊ฒฐ๊ณผ๊ฐ’์„ ๋„์ถœํ–ˆ์Šต๋‹ˆ๋‹ค.

  1. root์˜ val์„ ๊ฒฐ๊ณผ levelOrders ์— ์ถ”๊ฐ€ (๋ ˆ๋ฒจ 1)
  2. root์˜ left ๋…ธ๋“œ์™€ right ๋…ธ๋“œ๋ฅผ ํƒ€๊ฒŸ targetNodes ์œผ๋กœ ์„ ์ • => ๋‹ค์Œ ๋ ˆ๋ฒจ ๋…ธ๋“œ๋“ค ์„ ์ •
  3. ํƒ€๊ฒŸ targetNodes ์˜ ๋…ธ๋“œ๋“ค์˜ val์„ ๊ฒฐ๊ณผ levelOrders ์— ์ถ”๊ฐ€ (๋ ˆ๋ฒจ 2)
  4. ํƒ€๊ฒŸ targetNodes ์˜ ๋…ธ๋“œ๋“ค์˜ left ๋…ธ๋“œ์™€ right ๋…ธ๋“œ๋ฅผ ๋‹ค์Œ ํƒ€๊ฒŸ targetNodes ์œผ๋กœ ์„ ์ •
  5. ~ ๋ฐ˜๋ณต ~
var levelOrder = function (root) {
  const levelOrders = [];
  let targetNodes = [root];

  while (root) {
    const nextTargets = [];
    const currentLevels = [];
    for (const targetNode of targetNodes) {
      currentLevels.push(targetNode.val);

      if (targetNode.left !== null) nextTargets.push(targetNode.left);
      if (targetNode.right !== null) nextTargets.push(targetNode.right);
    }
    levelOrders.push(currentLevels);
    if (nextTargets.length < 1) break;
    targetNodes = nextTargets;
  }

  return levelOrders;
};

572. Subtree of Another Tree

ํŠธ๋ฆฌ๋ฅผ root ๋…ธ๋“œ์—์„œ๋ถ€ํ„ฐ ํ•˜์œ„ ๋…ธ๋“œ๋กœ ํƒ์ƒ‰ํ•˜๋ฉด์„œ subTree๋ž‘ ๊ฐ™์€ ํŠธ๋ฆฌ์ธ์ง€ ํŒ๋‹จํ•ฉ๋‹ˆ๋‹ค.
root์—์„œ ํ•˜์œ„๊นŒ์ง€ ํŠธ๋ฆฌ ์ „์ฒด ํƒ์ƒ‰ํ•˜๋Š” ๊ฑด ์žฌ๊ท€๋กœ ์ˆ˜ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค.
๋‘ ํŠธ๋ฆฌ๊ฐ€ ๊ฐ™์€์ง€ ๊ณ„์‚ฐํ•˜๊ธฐ ์œ„ํ•ด isSameTree ๋ผ๋Š” ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.
isSameTree ๋Š” ๋‹จ์ˆœํ•˜๊ฒŒ ๋‘ ํŠธ๋ฆฌ์˜ ๋ชจ๋“  ๊ฐ’์„ ๋น„๊ตํ•˜๋ฉด์„œ ๊ฐ™์€์ง€ ํŒ๋‹จํ•ฉ๋‹ˆ๋‹ค.

var isSameTree = function (one, theOther) {
  if (!one && !theOther) return true;
  else if (!one || !theOther) return false;
  if (one.val !== theOther.val) return false;
  if (!isSameTree(one.left, theOther.left)) return false;
  if (!isSameTree(one.right, theOther.right)) return false;

  return true;
};

var isSubtree = function (root, subRoot) {
  if (isSameTree(root, subRoot)) return true;

  if (root.left && isSubtree(root.left, subRoot)) return true;
  if (root.right && isSubtree(root.right, subRoot)) return true;

  return false;
};

150. Evaluate Reverse Polish Notation

์Šคํƒ์„ ํ•˜๋‚˜ ๋งŒ๋“ค์–ด์„œ token ๊ฐ’์— ๋”ฐ๋ผ ์—ฐ์‚ฐํ•ฉ๋‹ˆ๋‹ค.
token์ด ์ˆซ์ž๋ผ๋ฉด ์Šคํƒ์— ๋„ฃ๊ณ , ์—ฐ์‚ฐ์ž๋ผ๋ฉด ์ ํ•ฉํ•œ ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

var evalRPN = function (tokens) {
  const numStack = [];

  for (const token of tokens) {
    if (Number.isInteger(Number(token))) {
      numStack.push(Number(token));
    } else {
      const second = numStack.pop();
      const first = numStack.pop();

      if (token === "+") numStack.push(first + second);
      if (token === "-") numStack.push(first - second);
      if (token === "*") numStack.push(first * second);
      if (token === "/") numStack.push(Math.trunc(first / second));
    }
  }

  return numStack[0];
};

์ด๋ฒˆ ๋ฌธ์ œ๋“ค ์–ด๋ ต๋„ค์š” ๐Ÿ˜ญ

@heony704 heony704 self-assigned this Nov 20, 2024
@oris8 oris8 requested review from alexgoni and dudwns0213 November 20, 2024 02:54
@oris8 oris8 merged commit d92c002 into master Nov 26, 2024
JooKangsan pushed a commit that referenced this pull request Dec 3, 2024
* 102 / Binary Tree Level Order Traversal / Medium / 36m

* 150 / Evaluate Reverse Polish Notation / Medium / 40m

* 572 / Subtree of Another Tree / Easy / 39m
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants