题目
给你二叉树的根节点 root ,返回它节点值的 前序 遍历。
示例 1:
代码语言:javascript复制输入:root = [1,null,2,3]
输出:[1,2,3]
示例 2:
输入:root = [] 输出:[] 示例 3:
输入:root = [1] 输出:[1] 提示:
树中节点数目在范围 [0, 100] 内 -100 <= Node.val <= 100
进阶:递归算法很简单,你可以通过迭代算法完成吗?
解法
其实这种题目不难,我感觉烦的是数据结构,题目里面给个list,搞得我不好测试。 比如之前的链表,非得让我自己写个list和链表的转换才好进行调试。
代码语言:javascript复制from typing import Optional, List
from alo.common import TreeNode
class Solution:
def preorderTraversal(self, root: Optional[TreeNode]) -> List[int]:
ans = []
stack = [root]
while stack:
node = stack.pop()
if node:
ans.append(node.val)
if node.right:
stack.append(node.right)
if node.left:
stack.append(node.left)
return ans
if __name__ == '__main__':
s = Solution()
s.preorderTraversal(TreeNode(1, None, TreeNode(2, TreeNode(3), None)))