| https://leetcode.com/problems/binary-tree-preorder-traversal | Easy |
|---|
class Solution {
fun preorderTraversal(root: TreeNode?): List<Int> {
val res = ArrayList<Int>()
var cur = root
while (cur != null) {
val left = cur.left
if (left == null) {
res.add(cur.`val`)
cur = cur.right
} else {
var prev = left
while (prev.right != null && prev.right !== cur) prev = prev.right
if (prev.right == null) {
res.add(cur.`val`)
prev.right = cur
cur = cur.left
} else {
prev.right = null
cur = cur.right
}
}
}
return res
}
}