题解 | #农场牛的最佳观赏次序#
农场牛的最佳观赏次序
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;
}
};
查看4道真题和解析