@@ -155,9 +155,82 @@ public:
155
155
156
156
## 其他语言版本
157
157
158
-
159
158
Java:
160
159
160
+ ```java
161
+ // 前序遍历顺序:中-左-右,入栈顺序:中-右-左
162
+ class Solution {
163
+ public List<Integer> preorderTraversal(TreeNode root) {
164
+ List<Integer> result = new ArrayList<>();
165
+ if (root == null){
166
+ return result;
167
+ }
168
+ Stack<TreeNode> stack = new Stack<>();
169
+ stack.push(root);
170
+ while (!stack.isEmpty()){
171
+ TreeNode node = stack.pop();
172
+ result.add(node.val);
173
+ if (node.right != null){
174
+ stack.push(node.right);
175
+ }
176
+ if (node.left != null){
177
+ stack.push(node.left);
178
+ }
179
+ }
180
+ return result;
181
+ }
182
+ }
183
+
184
+ // 中序遍历顺序: 左-中-右 入栈顺序: 左-右
185
+ class Solution {
186
+ public List<Integer> inorderTraversal(TreeNode root) {
187
+ List<Integer> result = new ArrayList<>();
188
+ if (root == null){
189
+ return result;
190
+ }
191
+ Stack<TreeNode> stack = new Stack<>();
192
+ TreeNode cur = root;
193
+ while (cur != null || !stack.isEmpty()){
194
+ if (cur != null){
195
+ stack.push(cur);
196
+ cur = cur.left;
197
+ }else{
198
+ cur = stack.pop();
199
+ result.add(cur.val);
200
+ cur = cur.right;
201
+ }
202
+ }
203
+ return result;
204
+ }
205
+ }
206
+
207
+ // 后序遍历顺序 左-右-中 入栈顺序:中-左-右 出栈顺序:中-右-左, 最后翻转结果
208
+ class Solution {
209
+ public List<Integer> postorderTraversal(TreeNode root) {
210
+ List<Integer> result = new ArrayList<>();
211
+ if (root == null){
212
+ return result;
213
+ }
214
+ Stack<TreeNode> stack = new Stack<>();
215
+ stack.push(root);
216
+ while (!stack.isEmpty()){
217
+ TreeNode node = stack.pop();
218
+ result.add(node.val);
219
+ if (node.left != null){
220
+ stack.push(node.left);
221
+ }
222
+ if (node.right != null){
223
+ stack.push(node.right);
224
+ }
225
+ }
226
+ Collections.reverse(result);
227
+ return result;
228
+ }
229
+ }
230
+ ```
231
+
232
+
233
+
161
234
162
235
Python:
163
236
``` python3