Java二叉树遍历的非递归算法(前序)

二叉树迭代:

遍历左子树

无论左子树为空还是右子树为空:

  1. 出栈操作
  2. 访问右子树
public String preOrder(TreeNode root) {
		StringBuffer sb = new StringBuffer();
		Deque<TreeNode> stack = new ArrayDeque<>();
		TreeNode p = root;
		while (p != null || !stack.isEmpty()) {
			while (p != null) {//访问左子树 
                sb.append(p.val);
				stack.push(p);
				p = p.left;
			}

			if (!stack.isEmpty()) {//出栈操作
				p = stack.pop();
				p = p.right;
			}
		}
		return sb.toString();

	}

上一篇:Java-Process执行脚本,waitFor()卡住不执行


下一篇:期货CTP接口C++源码与C#应用程序的对接