private List<Integer> postorderInterative2(TreeNode root) {
			List<Integer> result = new ArrayList<Integer>();
			Stack<TreeNode> parentStack = new Stack<TreeNode>();

			if (root == null)
				return result;

			TreeNode cur = root;
			TreeNode preVisited = null;

			// while (!parentStack.isEmpty() || cur != null)
			do {
				if (cur != null) {
					parentStack.push(cur);
					cur = cur.left;
				} else {
					TreeNode peeknode = parentStack.peek();
					if (peeknode.right != null && preVisited != peeknode.right) {
						cur = peeknode.right;
					} else {
						preVisited = peeknode;
						result.add(peeknode.val);
						parentStack.pop();
					}
				}
			} while (!parentStack.isEmpty());

			return result;

		}