-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy patha_94.java
More file actions
37 lines (34 loc) · 1014 Bytes
/
a_94.java
File metadata and controls
37 lines (34 loc) · 1014 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
package datastructure.tree;
import sun.reflect.generics.tree.Tree;
import java.util.ArrayList;
import java.util.List;
import java.util.Stack;
/**
* 非递归实现二叉树的中序遍历
*/
public class a_94 {
//思想:先找最左结点输出,之后输出最左结点的根结点root,在按上述循环root结点的右子树
public List<Integer> inorderTraversal(TreeNode root) {
List<Integer> ret = new ArrayList<>();
if (root == null) return ret;
Stack<TreeNode> stack = new Stack<>();
TreeNode cur = root;
//stack.add(root);
while (cur != null || !stack.isEmpty()) {
while (cur != null) {
stack.push(cur);
cur = cur.left;
}
TreeNode node = stack.pop();
ret.add(node.val);
cur = node.right;
}
return ret;
}
class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode(int x) { val = x; }
}
}