15
15
16
16
#### TreeNode 定义
17
17
18
+ ``` python
19
+ class TreeNode :
20
+ def __init__ (self , val = 0 , left = None , right = None ):
21
+ self .val = val
22
+ self .left = left
23
+ self .right = right
24
+ ```
25
+
18
26
``` cpp
19
27
struct TreeNode {
20
28
int val;
@@ -26,17 +34,35 @@ struct TreeNode{
26
34
```
27
35
28
36
#### 前序递归
37
+ ```python
38
+ # Definition for a binary tree node.
39
+ # class TreeNode:
40
+ # def __init__(self, val=0, left=None, right=None):
41
+ # self.val = val
42
+ # self.left = left
43
+ # self.right = right
44
+ class Solution:
45
+ def preOrderRecursion(self, root, res):
46
+ if root is None: return
47
+ res.append(root.val) #调整append位置,就是前/中/后序遍历的差别
48
+ self.preOrderRecursion(root.left, res)
49
+ self.preOrderRecursion(root.right, res)
50
+ def preorderTraversal(self, root: Optional[TreeNode]) -> List[int]:
51
+ res = list()
52
+ self.preOrderRecursion(root, res)
53
+ return res
54
+ ```
29
55
30
56
``` cpp
31
57
// 前中后序遍历只在这个函数有区别, 调整push_back的顺序
32
58
void preOrderRecursion (TreeNode* root, vector<int >& res){
59
+ if(root == nullptr) return {};
33
60
res.push_back(root->val);
34
61
preOrderRecursion(root->left, res);
35
62
preOrderRecursion(root->right, res);
36
63
}
37
64
38
65
vector<int > preOrderTraversal(TreeNode* root){
39
- if(root == nullptr) return {};
40
66
41
67
vector<int > res;
42
68
@@ -46,7 +72,11 @@ vector<int> preOrderTraversal(TreeNode* root){
46
72
}
47
73
```
48
74
75
+
49
76
#### 前序非递归
77
+ ```python
78
+
79
+ ```
50
80
51
81
``` cpp
52
82
// 通过非递归遍历: 用栈进行辅助
0 commit comments