解
前序遍历:根 左 右
递归
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
def preorderTraversal(self, root: TreeNode) -> List[int]:
result = list()
self.dfs(root, result)
return result
def dfs(self, node, result):
if not node:
return
result.append(node.val)
self.dfs(node.left, result)
self.dfs(node.right, result)
迭代
栈
- 弹栈 必 添加进 result
- 先将根节点压入栈中
- 对于某一被弹出的节点
- 将val添加进result
- 如果存在右节点 压入栈中
- 如果存在左节点 压入栈中
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
def preorderTraversal(self, root: TreeNode) -> List[int]:
if not root:
return []
result = list()
stack = list()
stack.append(root)
while stack:
node = stack.pop()
result.append(node.val)
if node.right:
stack.append(node.right)
if node.left:
stack.append(node.left)
return result