题目:给定一个二叉树的根节点 root ,返回它的 中序 遍历。
解法:迭代
思路:模拟
代码:
/**
-
Definition for a binary tree node.
-
public class TreeNode {
-
int val;
-
TreeNode left;
-
TreeNode right;
-
TreeNode() {}
-
TreeNode(int val) { this.val = val; }
-
TreeNode(int val, TreeNode left, TreeNode right) {
-
this.val = val;
-
this.left = left;
-
this.right = right;
-
}
-
}
*/
class Solution {
public List inorderTraversal(TreeNode root) {
List res = new ArrayList();
Stack stack = new Stack();
if(root==null){
return res;
}
TreeNode pNode = root;
while(!stack.isEmpty()||pNode!=null){
if(pNode!=null){
stack.push(pNode);
pNode = pNode.left;
} else{
TreeNode popNode = stack.pop();
res.add(popNode.val);
pNode = popNode.right;
}} return res;
}
}