class Solution {
private List<Integer> retlist = new LinkedList<>();
public List<Integer> inorderTraversal(TreeNode root) {
//中序遍历,左臂入栈
TreeNode cur = root;
Stack<TreeNode> stack = new Stack<>();
while(cur!=null || !stack.isEmpty()){
if(cur!=null){
stack.add(cur);
cur = cur.left;
}
else{
cur = stack.pop();
retlist.add(cur.val);
cur = cur.right;
}
}
return retlist;
}
}
反復書き込みは、コアアイデアは、ツリーノードCURとスタックに基づいて2件の判決があり、この時、過去である、と判断する根拠としてのみスタック。
curが空でない場合、それはポップを空であれば、追加のスタック、左へのポインタは、戻り値が追加され、その後、ポインタが右向き