1. 程式人生 > 其它 >1099 Build A Binary Search Tree (30分)

1099 Build A Binary Search Tree (30分)

技術標籤:# PAT甲級二叉查詢樹

原題連結

中序遍歷 權值呈遞增序列
題目給出的是節點序號間的關係 就用二叉樹的靜態寫法會比較方便

#include <iostream>
#include <algorithm>
#include <queue>
#include <vector>
using namespace std;
const int maxn = 110;
struct node
{
	int data;
	int lchild,rchild;
}Node[maxn];
int vi[maxn];
int num = 0,n;
void
inorder(int root) { if(root == -1) return; inorder(Node[root].lchild); Node[root].data = vi[num++]; inorder(Node[root].rchild); } int cont = 0; void BFS() { queue<int> q; q.push(0); while(!q.empty()) { int now = q.front(); q.pop(); cont++; if(cont > n) return; cout <<
Node[now].data; if(cont < n) cout << " "; if(Node[now].lchild != -1) q.push(Node[now].lchild); if(Node[now].rchild != -1) q.push(Node[now].rchild); } } int main() { cin >> n; for(int i = 0; i < n; i++) { cin >> Node[i].lchild >> Node[i].rchild; }
for(int i = 0; i < n; i++) { cin >> vi[i]; } sort(vi, vi + n); inorder(0); BFS(); return 0; }

一遍過哈哈哈哈 我好牛(不是