text: //Given a binary tree, return the inorder traversal of its nodes' values.
  //
  //Example:
  //
  //Input: [1,null,2,3]
  //   1
  //    \
  //     2
  //    /
  //   3
  //
  //Output: [1,3,2]
  //Follow up: Recursive solution is trivial, could you do it iteratively?
  /**
   * Definition for a binary tree node.
   * struct TreeNode {
   *     int val;
   *     TreeNode *left;
   *     TreeNode *right;
   *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
   * };
   */
  class Solution {
  public:
      vector<int> inorderTraversal(TreeNode* root) {
          vector<int> ans;
          stack<TreeNode*> s;
          auto* cur = root;
          while (cur || !s.empty()) {
              while (cur) {
                  s.push(cur);
                  cur = cur->left;
              }
              cur = s.top();
              s.pop();
              ans.push_back(cur->val);
              cur = cur->right;
          }
          return ans;
      }
  };
  