鄧俊輝 演算法訓練營練習 二叉排序樹

2021-08-28 09:22:18 字數 863 閱讀 4250

先序遍歷:輸出自己 -> 左子樹 ->右子樹

中序遍歷:輸出左子樹 -> 自己 ->右子樹 

#include using namespace std;

struct node

t[10000];

//root代表根節點

//cnt代表二叉樹大小

int root,cnt;

//建樹

int insert(int v,int x)

/*t[x].lch && t[x].rch 實際是子樹的x不記錄數值起引導作用

t[x].val 是記錄值*/

if(t[x].val > v)

t[x].lch = insert(v,t[x].lch);

else

t[x].rch = insert(v,t[x].rch);

printf("\nx = %d | val = %d | lch = %d | rch = %d",x,t[x].val,t[x].lch,t[x].rch);

printf("\n v\n");

return x;

}// 先序遍歷

void dlr(int x,vector&ans)

}vectorgetanswer(int n, vectorsequence)

int main()

vectorans = getanswer(n, sequence);//返回分配好的二叉樹向量

for (int i = 0; i < n; ++i)

printf("%d%c", ans[i], " \n"[i == n - 1]);

return 0;

}

鄧俊輝 演算法訓練營練習 數字盒子

數字盒子 問題描述 你有乙個盒子,你可以往裡面放數,也可以從裡面取出數。初始時,盒子是空的,你會依次做 q 個操作,操作分為兩類 插入操作 詢問盒子中是否存在數 x,如果不存在則把數 x 丟到盒子裡。刪除操作 詢問盒子中是否存在數 x,如果存在則取出 x。對於每個操作,你需要輸出是否成功插入或刪除。...

鄧俊輝演算法訓練營習題 最小交換

最小交換 時間限制 1 sec 空間限制 256 mb 問題描述 給定乙個 1 到 n 的排列 即乙個序列,其中 1,n 之間的正整數每個都出現了恰好 1 次 你可以花 1 元錢交換兩個相鄰的數。現在,你希望把它們公升序排序。求你完成這個目標最少需要花費多少元錢。輸入格式 第一行乙個整數 n,表示排...

鄧俊輝演算法訓練營習題 樓爾邦德(二分)

樓爾邦德 時間限制 2 sec 空間限制 256 mb 問題描述 給定包含 n 個數的序列 a。再給出 q 個詢問,每個詢問包含乙個數 x,詢問的是序列 a 中不小於 x 的最小整數是多少 無解輸出 1 輸入格式 第一行乙個數 n,表示序列長度。第二行 n 個用空格隔開的正整數,描述序列中的每乙個元...