본문 바로가기

알고리즘45

[LeetCode] 94. Binary Tree Inorder Traversal class Solution { public List inorderTraversal(TreeNode root) { List answer = new ArrayList(); Stack stack = new Stack(); if (root == null) { return answer; } TreeNode current = root; while(current != null || !stack.isEmpty()) { while (current != null) { stack.push(current); current = current.left; } current = stack.pop(); answer.add(current.val); current = current.right; } return answer; } } Ino.. 2023. 12. 5.
[LeetCode] 111. Minimum Depth of Binary Tree class Solution { public int minDepth(TreeNode root) { if (root == null) { return 0; } Queue queue = new LinkedList(); queue.offer(root); int level = 1; while (!queue.isEmpty()) { int size = queue.size(); for (int i = 0; i < size; i++) { TreeNode curNode = queue.poll(); if (curNode.left == null && curNode.right == null) { return level; } if (curNode.left != null) { queue.offer(curNode.left); } if.. 2023. 12. 5.
[LeetCode] 110. Balanced Binary Tree class Solution { public boolean isBalanced(TreeNode root) { if (root == null) { return true; } if (isBalancedHelper(root) == -1) { return false; } return true; } public int isBalancedHelper(TreeNode root) { if (root == null) { //해당 노드가 null 이라면 0을 반환 return 0; } int leftDepth = isBalancedHelper(root.left); //왼쪽 줄기의 깊이를 계산 int rightDepth = isBalancedHelper(root.right); // 오른쪽 줄기의 깊이를 계산 if (leftD.. 2023. 12. 5.
[LeetCode] 104. Maximum Depth of Binary Tree class Solution { public int maxDepth(TreeNode root) { if (root == null) { //해당 노드가 null 이라면 0을 반환 return 0; } int leftDepth = maxDepth(root.left); //왼쪽 줄기의 깊이를 계산 int rightDepth = maxDepth(root.right); // 오른쪽 줄기의 깊이를 계산 return Math.max(leftDepth, rightDepth) + 1; // 왼쪽과 오른쪽 중 더 큰쪽에 1을 더하여 반환 } } 우선 왼쪽부터 시작하여 가장 깊은 곳에 위치한 node까지 찾아간다. 거기서부터 차례대로 올라가며 깊이 값에 1을 더해간다. 1번 루트노드에서 시작하여 maxDepth(root.le.. 2023. 12. 5.
728x90