# Definition for a binary tree node.# 前序遍歷的意思是先遍歷根節點,而後遍歷左子樹,最後是右子樹# 所以這道題能夠用遞歸的方法直接解出來。class TreeNode: def __init__(self, x): self.val = x self.left = None self.right = Nonefrom typing import Listclass Solution: def preorderTraversal1(self, root: TreeNode) -> List[int]: self.res = [] self.dfs(root) return self.res def dfs(self,root): if not root :return # 先遍歷根節點 self.res.append(root.val) # 而後遍歷左子樹 self.dfs(root.left) # 而後是右子樹 self.dfs(root.right) # 下邊是迭代的方法。 def preorderTraversal(self, root: TreeNode) -> List[int]: if not root :return [] # 將根節點壓入棧 stack,res = [root],[] # 當棧爲空的時候,表明全部的節點都遍歷了 while stack: # 彈出節點 node = stack.pop() # 判斷節點是否爲空 if node: # 將節點放入列表 res.append(node.val) # 將右節點壓入棧 if node.right : stack.append(node.right) # 將左節點壓入棧 if node.left : stack.append(node.left) return res