Skip to content

Commit 18697e7

Browse files
committed
feat: binary-tree-preorder-traversal
1 parent 1335092 commit 18697e7

File tree

1 file changed

+43
-0
lines changed

1 file changed

+43
-0
lines changed
+43
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
from typing import List
2+
3+
class TreeNode:
4+
def __init__(self, val=0, left=None, right=None):
5+
self.val = val
6+
self.left = left
7+
self.right = right
8+
9+
class Solution:
10+
"""
11+
144. 二叉树的前序遍历
12+
https://leetcode-cn.com/problems/binary-tree-preorder-traversal/
13+
给定一个二叉树的根节点 root ,返回它的 前序 遍历。
14+
DLR--前序遍历(根在前,从左往右,一棵树的根永远在左子树前面,左子树又永远在右子树前面 )
15+
LDR--中序遍历(根在中,从左往右,一棵树的左子树永远在根前面,根永远在右子树前面)
16+
LRD--后序遍历(根在后,从左往右,一棵树的左子树永远在右子树前面,右子树永远在根前面)
17+
"""
18+
# 递归
19+
def preorderTraversal(self, root: TreeNode) -> List[int]:
20+
res = []
21+
def pre_order(tree):
22+
if not tree:
23+
return None
24+
res.append(tree.val)
25+
pre_order(tree.left)
26+
pre_order(tree.right)
27+
28+
pre_order(root)
29+
return res
30+
31+
# 栈
32+
def preorderTraversalByStack(self, root: TreeNode) -> List[int]:
33+
stack, res = [root], []
34+
while stack:
35+
i = stack.pop()
36+
if isinstance(i, TreeNode):
37+
stack.extend([i.left, i.right, i.val])
38+
elif isinstance(i, int):
39+
res.append(i)
40+
41+
return res
42+
43+

0 commit comments

Comments
 (0)