金歌 发表于 2022-8-10 09:04:12

二叉树专题

Complete Binary Search Tree (30)

Link
这道题相当于是已知完全二叉排序树的中序遍历,要输出其层序遍历。做法很巧妙,根本不用建树。
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <algorithm>
#include <string>
#include <string.h>
#include <vector>
#include <cmath>
#include <unordered_set>
using namespace std;
int n,cur;
int a,b;
void levelTraverse(int r){
        if(r<=n){
                levelTraverse(r<<1);
                b=a[++cur];
                levelTraverse((r<<1)+1);
        }
}
int main() {
        scanf("%d",&n);
        for(int i=1;i<=n;++i)
                scanf("%d",&a);
        sort(a+1,a+1+n);
        levelTraverse(1);
        for(int i=1;i<n;++i)
                printf("%d ",b);
        printf("%d\n",b);
        return 0;
}Is It a Binary Search Tree (25)

Link
根据BST的前序遍历输出其后序遍历。不用建树。
#include #include #include #include #include #include #include using namespace std;int n;int a;bool isMirror=false;bool isBST=true;vectorans;void build(int l,int r){        if(!isBST||l>r) return;        int root=a;        if(isMirror){                int i=l+1;                for(;i
页: [1]
查看完整版本: 二叉树专题