马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
x
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[1010],b[1010];
- void levelTraverse(int r){
- if(r<=n){
- levelTraverse(r<<1);
- b[r]=a[++cur];
- levelTraverse((r<<1)+1);
- }
- }
- int main() {
- scanf("%d",&n);
- for(int i=1;i<=n;++i)
- scanf("%d",&a[i]);
- sort(a+1,a+1+n);
- levelTraverse(1);
- for(int i=1;i<n;++i)
- printf("%d ",b[i]);
- printf("%d\n",b[n]);
- return 0;
- }
复制代码 Is It a Binary Search Tree (25)
Link
根据BST的前序遍历输出其后序遍历。不用建树。
[code]#include #include #include #include #include #include #include using namespace std;int n;int a[1010];bool isMirror=false;bool isBST=true;vectorans;void build(int l,int r){ if(!isBST||l>r) return; int root=a[l]; if(isMirror){ int i=l+1; for(;i |