1:给定一棵二叉树,其前序遍历结果为:ABDECFG,中序遍历结果为:DEBACFG。请问这棵树的正确后序遍历结果是什么?

A. EDBGFCA

B. EDGBFCA

C. DEBGFCA

D. DBEGFCA

解析:

中序遍历的顺序是:左-根-右

前序遍历的顺序是:根-左-右

后序遍历的顺序是:左-右-根

3:完善程序

#include <iostream>
#include <vector>
using namespace std;
int find_missing(vector<int>& nums) {
    int left = 0, right = nums.size() - 1;
    while (left < right){
        int mid = left + (right - left) / 2;
        if (nums[mid] == mid + ①) {
            ②;
        } else {
            ③;
        }
    }
    return ④;
}
int main() {
    int n;
    cin >> n;
    vector<int> nums(n);
    for (int i = 0; i < n; i++) cin >> nums[i];
    int missing_number = find_missing(nums);
    if (missing_number == ⑤) {
        cout << "Sequence is consecutive" << endl;
    }else{
        cout << "Missing number is " << missing_number << endl;
    }
    return 0;
}

1.①处应填( )

A. 1

B. nums[0]

C. right

D. left

解析:因为如果我的中间项加上公差等于nums[mid],那么就要调整左边界

2.③处应填( )

A. left=mid+1

B. right=mid-1

C. right=mid

D. left=mid