Leetcode 144.二叉树的前序遍历
1 题目描述(Leetcode题目链接)
给定一个二叉树,返回它的 前序 遍历。
输入: [1,null,2,3]
1
\
2
/
3
输出: [1,2,3]
进阶: 递归算法很简单,你可以通过迭代算法完成吗?
2 题解
二叉树的前序遍历需要用到栈的数据结构,首先将根节点入栈,开始循环,当栈不为空时,弹出栈顶,访问栈顶元素,随后将栈的右孩子入栈,再将栈的左孩子入栈。
# 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 []
retv = []
stack = [root]
while stack:
root = stack.pop()
retv.append(root.val)
if root.right:
stack.append(root.right)
if root.left:
stack.append(root.left)
return retv
递归方法。
# 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]:
retv = []
def preorder(root):
if root:
retv.append(root.val)
preorder(root.left)
preorder(root.right)
preorder(root)
return retv