先膜一下,这个中序非递归真是秒啊
今天刷力扣刷到的
中序非递归遍历
while (stack.size()!=0||rt!=null){ //注意此处的循环判断条件。
// 对于弹出的每个右子树节点,都要判断并且遍历其左子树节点进栈,这也是双重循环的必要性
while(rt!=null){
stack.push(rt);
rt = rt.left;
}
if(stack.size()!=0){
rt = stack.pop();
rzT.right = new TreeNode(rt.val);
rzT = rzT.right;
if(rt.right!=null){
rt = rt.right; // 右子树非空,指向右子树,然后转向上面的while对右子树的左节点进行入栈
}else {
rt = null; //这句话是精髓
}
}
}