每日一題20201208(144. 二叉樹的前序遍歷)
阿新 • • 發佈:2020-12-08
144. 二叉樹的前序遍歷
遞迴寫法
前序遍歷順序就是 根節點->左節點->右節點
# Definition for a binary tree node. # class TreeNode: # def __init__(self, val=0, left=None, right=None): # self.val = val # self.left = left # self.right = right class Solution: def preorderTraversal(self, root: TreeNode) -> List[int]: node = [] self.order(root, node) return node def order(self, root, node): if root is None: return node.append(root.val) self.order(root.left, node) self.order(root.right, node)
迭代寫法
通過一個棧來維護節點的輸出順序,每次出一個節點,把節點的值拿出來放到結果數組裡,請注意棧是先進後出。
所以先進right節點,到時候先出的就是left節點。
# Definition for a binary tree node. # class TreeNode: # def __init__(self, val=0, left=None, right=None): # self.val = val # self.left = left # self.right = right class Solution: def preorderTraversal(self, root: TreeNode) -> List[int]: if root is None: return [] stack = [root] ans = [] while len(stack) > 0: current = stack.pop() ans.append(current.val) if current.right is not None: stack.append(current.right) if current.left is not None: stack.append(current.left) return ans