目录
一、题目
给定一个二叉树,返回它的 前序遍历。
二、示例
示例:
输入: [1,null,2,3] 1 \ 2 / 3 输出: [1,2,3]
三、思路
1、递归。前序遍历:根-->左-->右
2、非递归,栈的思想,先进后出
四、代码
1、
# 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):
if root is None:
return []
return [root.val] + self.preorderTraversal(root.left) + self.preorderTraversal(root.right)
if __name__ == '__main__':
root = TreeNode(1)
root.right = TreeNode(2)
root.right.left = TreeNode(3)
s = Solution()
ans = s.preorderTraversal(root)
print(ans)
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):
res = []
if root is None:
return res
# 先序遍历:根左右 栈:先进后出
stack = [root]
while(stack):
root = stack.pop()
res.append(root.val)
if root.right:
stack.append(root.right)
if root.left:
stack.append(root.left)
return res
if __name__ == '__main__':
root = TreeNode(1)
root.right = TreeNode(2)
root.right.left = TreeNode(3)
s = Solution()
ans = s.preorderTraversal(root)
print(ans)