二叉树专题
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]