给定一个二叉树,返回它的 前序 遍历。
示例:
输入: [1,null,2,3]
1
\
2
/
3
输出: [1,2,3]
进阶: 递归算法很简单,你可以通过迭代算法完成吗?
通过次数192,753
| 提交次数285,362
代码实现
- 递归实现
# 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.re = []
self.preorder(root)
return self.re
def preorder(self, root: TreeNode) -> None:
if root:
self.re.append(root.val)
self.preorder(root.left)
self.preorder(root.right)
- 非递归实现
# 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.re = []
if not root: return self.re
stack = [root]
while stack:
cur = stack.pop(0)
temp = []
self.re.append(cur.val)
while cur:
if cur.right:
temp = [cur.right]+temp
if cur.left:
self.re.append(cur.left.val)
cur = cur.left
stack = temp + stack
return self.re
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/binary-tree-preorder-traversal
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。