public void preOrder_Stack(TreeNode root) {
        Stack<TreeNode> stack = new Stack<TreeNode>();
        if (root != null) {
            stack.push(root);
            while (!stack.empty()) {
                root = stack.pop(); // 中
                visit(root);
                if (root.right != null) // 右
                    stack.push(root.right);
                if (root.left != null) // 左
                    stack.push(root.left);
            }
        }
    }