개발 공부/TIL(Today I Learned)

99클럽 코테 스터디 17일차 TIL Binary Tree Inorder Traversal

애해 2024. 8. 8. 01:21
728x90

# 오늘의 학습 키워드 

깊이/너비 우선 탐색(DFS/BFS)
 

# 오늘의 문제 

https://leetcode.com/problems/binary-tree-inorder-traversal/description/

 

Given the root of a binary tree, return the inorder traversal of its nodes' values.

 

Example 1:

 

Input: root = [1,null,2,3]

Output: [1,3,2]

Example 2:

Input: root = []

Output: []

Example 3:

Input: root = [1]

Output: [1]

 

Constraints:

  • The number of nodes in the tree is in the range [0, 100].
  • -100 <= Node.val <= 100

 

# 나의 풀이방식 

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode() {}
 *     TreeNode(int val) { this.val = val; }
 *     TreeNode(int val, TreeNode left, TreeNode right) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */
import java.util.*;
class Solution {

     List<Integer> list = new ArrayList<>();

    public List<Integer> inorderTraversal(TreeNode root) {
        // 재귀함수 작성
        inorder(root);
        return list;
        
    }

    public void inorder(TreeNode node){

        // node가 null이 아닌경우 
        if(node != null){
            if(node.left != null){
                inorder(node.left);
            }
            list.add(node.val);
            if(node.right != null){
                inorder(node.right);
            }

        }
    }

}

 

 

# 오늘의 공부 

중위순회의 경우에는 루트노드가 중앙에 위치하게 된다.

* 자식 왼쪽 노드 -> 부모노드 -> 자식 오른쪽 노드 순서 

 

# 오늘의 회고 

재귀함수를 쓰지않고 풀려고 머리를 굴려봤는데 대부분의 이진탐색 문제의 경우에는 재귀함수 쓰는게 맞는거 같다.

 

반응형