迭代

vector<int> inorderTraversal(TreeNode* root) {
  vector<int> result;
  stack<TreeNode*> stk;
  while (root != nullptr || !stk.empty()) {
    while (root != nullptr) {
      stk.push(root);
      root = root->left;
    }
    root = stk.top();
    stk.pop();
    result.push_back(root->val);
    root = root->right;
  }
  return result;
}