1. 程式人生 > 實用技巧 >114二叉樹的前序遍歷

114二叉樹的前序遍歷

# Definition for a binary tree node.
# 前序遍歷的意思是先遍歷根節點,然後遍歷左子樹,最後是右子樹
# 因此這道題可以用遞迴的方法直接解出來。
class TreeNode:
def __init__(self, x):
self.val = x
self.left = None
self.right = None
from typing import List
class 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