今天看了许久,前序遍历的非递归实现方式。无奈小弟才疏学浅,有些愚笨,照着源码看了很久才有些思路,大神就是大神,如此简洁的几行代码就能实现前序遍历,真是佩服,先贴代码。
// 前序遍历,栈方式
public void preLoopStack(TreeNode root)
{
if (root == null)
return;
Stack<TreeNode> s = new Stack<>();
while (root != null || !s.isEmpty())
{
while (root != null)
{
System.out.print(root.val);
s.push(root);// 先访问再入栈
root = root.leftChild;// 一直访问左子树
}
root = s.pop();
root = root.rightChild;// 如果是null,出栈并处理右子树