考察的知识点:二叉树的中序遍历;

解答方法分析:

  1. 定义一个递归函数inorder,接收一个指向根节点的指针参数root和一个指向整型数组的引用参数result。该函数将按照中序遍历的顺序遍历并存储以root为根节点的二叉树的值。
  2. 在inorder函数中,首先判断根节点root是否为空。若为空,则直接返回。
  3. 递归调用inorder函数遍历root的左子树,即inorder(root->left, result)。
  4. 将root的值存入result数组中,即result.push_back(root->val)。
  5. 递归调用inorder函数遍历root的右子树,即inorder(root->right, result)。
  6. 函数外部调用inorder函数,传入根节点root和一个空的整型数组。
  7. 返回存储了按中序遍历顺序排列的节点值的result数组。

所用编程语言:C++;

完整编程代码:↓

/**
 * struct TreeNode {
 *  int val;
 *  struct TreeNode *left;
 *  struct TreeNode *right;
 *  TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
 * };
 */
class Solution {
  public:
    void inorder(TreeNode* root, vector<int>& result) {
        if (root == nullptr) {
            return;
        }

        inorder(root->left, result);
        result.push_back(root->val);
        inorder(root->right, result);
    }

    vector<int> inorderTraversal(TreeNode* root) {
        vector<int> result;
        inorder(root, result);
        return result;
    }
};