使用棧來實現,注意進棧順序要先push右節點,再push左節點。
# 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]:
ans,stack = [],[]
if not root: return ans
stack = [root]
while stack:
tmp = stack.pop()
ans.append(tmp.val)
if tmp.right: stack.append(tmp.right)
if tmp.left: stack.append(tmp.left)
return ans
使用遞歸
# 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]:
self.ans = []
def func(root):
if not root: return
self.ans.append(root.val)
func(root.left)
func(root.right)
func(root)
return self.ans