Daily LeetCode Challenge - 144. Binary Tree Preorder Traversal

Min Young Kim·2023년 1월 9일
0

algorithm

목록 보기
42/198

Problem From.
https://leetcode.com/problems/binary-tree-preorder-traversal/

오늘 문제는 트리가 주어졌을때, 그 트리를 전위순회 (preorder traversal) 하는 문제였다.

전위 순회는 루트 노드를 방문한뒤 왼쪽 서브트리를 모두 전위순회 한뒤 오른쪽 서브트리를 전위순회 하는 식으로

이런 그림이 있다면 노드 방문 순서는 F B A D C E G I H 가 된다.

문제는 간단하게 dfs 를 활용하게 풀었다.

/**
 * Example:
 * var ti = TreeNode(5)
 * var v = ti.`val`
 * Definition for a binary tree node.
 * class TreeNode(var `val`: Int) {
 *     var left: TreeNode? = null
 *     var right: TreeNode? = null
 * }
 */
class Solution {
    fun preorderTraversal(root: TreeNode?): List<Int> {
        
        val list = arrayListOf<Int>()
        val queue : Queue<TreeNode> = LinkedList()
        
        root?.let{
            list.add(it.`val`)
            preOrder(it, list)
        }
        
        return list.toList()
        
    }
    
    private fun preOrder(node : TreeNode, list : ArrayList<Int>) {
        
        node.left?.let {
            list.add(it.`val`)
            preOrder(it, list)
        }
        
        node.right?.let {
            list.add(it.`val`)
            preOrder(it, list)
        }
        
    }

}
profile
길을 찾는 개발자

1개의 댓글

comment-user-thumbnail
2023년 1월 9일

굿.. 이거 완전탐색 그겅가? 난 트리어렵던데

답글 달기