[leetcode 94] Binary Tree Inorder Traversal
94. Binary Tree Inorder Traversal
https://leetcode.com/problems/binary-tree-inorder-traversal/
해결 과정
Tree Inorder Traversal
는 왼쪽->루트->오른쪽 순서로 순회하는 것이다.
result 값을 저장 할 파라미터를 받는 별도의 메소드를 만들고, 루트 순회 순서에 해당 값을 result 리스트에 추가해주었다.
코드
fun inorderTraversal(root: TreeNode?): List<Int> {
val result = mutableListOf<Int>()
inorder(result, root)
return result
}
fun inorder(result: MutableList<Int>, root: TreeNode?) {
root?.let {
it.left?.let { left ->
inorder(result, left)
}
result.add(it.`val`)
it.right?.let { right ->
inorder(result, right)
}
}
}
배운 점
Stack
을 활용해서도 풀 수 있다.
fun inorderTraversal(root: TreeNode?): List<Int> {
val result = mutableListOf<Int>()
val stack = Stack<TreeNode>()
val curr = root
while(null != curr || stack.isNotEmpty()) {
while(null != curr) {
stack.push(curr)
curr = current.left
}
curr = stack.pop()
result.add(curr.`val`)
curr = curr.right
}
return result
}
Leave a comment