본문 바로가기

Algorithm

[LeetCode] Java, Python - 94. Binary Tree Inorder Traversal

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

 

Binary Tree Inorder Traversal - LeetCode

Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.

leetcode.com

 

이진트리가 주어졌을때, 중위순회의 결과를 출력하는 문제이다.

중위순회는 left -> root -> right (왼쪽자식노드, 부모노드, 오른쪽자식노드) 순서대로 탐색하기때문에 재귀를 사용하여 풀었다.

 

1. 현재 노드가 null이 아니라면 먼저 가장 왼쪽의 자식노드를 계속해서 탐색한다.

2. 왼쪽자식을 모두 탐색했으면 현재 노드를 res 배열에 추가시킨다.

3. 그 다음으로 오른쪽노드를 탐색하는데 이때, 오른쪽 자식 기준으로 다시 왼쪽 노드 -> 부모 노드 -> 오른쪽 노드가 반복된다.

 

Java Code

/**
 * 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;
 *     }
 * }
 */
class Solution {
    public List<Integer> inorderTraversal(TreeNode root) {
        List<Integer> res = new ArrayList<>();
        recursive(root, res);
        return res;
    }
    private void recursive(TreeNode root, List<Integer> res){
        if(root != null){
            if(root.left != null){
                recursive(root.left, res);
            }
            res.add(root.val);
            if(root.right != null){
                recursive(root.right, res);
            }
        }
    }
}

Python Code

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution:
    def inorderTraversal(self, root: TreeNode) -> List[int]:
        res = []
        self.recursive(root, res)
        return res
    
    def recursive(self, root, res) -> List[int]:
        if root:
            self.recursive(root.left, res)
            res.append(root.val)
            self.recursive(root.right, res)