题解 | #农场牛的最佳观赏次序#
农场牛的最佳观赏次序
https://www.nowcoder.com/practice/8d618f78ba424b45924fb15c2857b515
考察的知识点:二叉树的中序遍历;
解答方法分析:
- 定义一个递归函数inorder,接收一个指向根节点的指针参数root和一个指向整型数组的引用参数result。该函数将按照中序遍历的顺序遍历并存储以root为根节点的二叉树的值。
- 在inorder函数中,首先判断根节点root是否为空。若为空,则直接返回。
- 递归调用inorder函数遍历root的左子树,即inorder(root->left, result)。
- 将root的值存入result数组中,即result.push_back(root->val)。
- 递归调用inorder函数遍历root的右子树,即inorder(root->right, result)。
- 函数外部调用inorder函数,传入根节点root和一个空的整型数组。
- 返回存储了按中序遍历顺序排列的节点值的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; } };