# Definition for a binary tree node.
# class TreeNode(object):
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution(object):
def preorderTraversal(self, root):
"""
:type root: TreeNode
:rtype: List[int]
"""
class Command(object):
def __init__(self,com,node):
self.com = com
self.node = node
res = []
stack = []
if not root:
return res
stack.append(Command("go",root))
while stack:
com = stack.pop()
if com.com == "print":
res.append(com.node.val)
else:
if com.node.right:
stack.append(Command("go",com.node.right))
if com.node.left:
stack.append(Command("go",com.node.left))
stack.append(Command("print",com.node))
return res