//中叙遍历的非递归实现---利用栈
public void inOrder(TreeNode root){
Stack<TreeNode> stack = new Stack<TreeNode>();
TreeNode p = root;
while (p!=null || !stack.isEmpty()) {
while (p!=null) {
stack.push(p);
p=p.left;
}
if (!stack.isEmpty()) {
p=stack.pop();
System.out.println(p.val);
p=p.right;
}
}
}
public void inOrder(TreeNode root){
Stack<TreeNode> stack = new Stack<TreeNode>();
TreeNode p = root;
while (p!=null || !stack.isEmpty()) {
while (p!=null) {
stack.push(p);
p=p.left;
}
if (!stack.isEmpty()) {
p=stack.pop();
System.out.println(p.val);
p=p.right;
}
}
}
本文介绍了一种使用栈实现的二叉树中序遍历的非递归方法。通过不断将当前节点压入栈并转向左子树,直到左子树为空。之后弹出栈顶元素并访问,再转向右子树继续遍历。

被折叠的 条评论
为什么被折叠?



