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)
}
}
}
굿.. 이거 완전탐색 그겅가? 난 트리어렵던데