L3 010 是否完全二叉搜尋樹

2021-08-17 05:36:08 字數 1425 閱讀 3914

將一系列給定數字順序插入乙個初始為空的二叉搜尋樹(定義為左子樹鍵值大,右子樹鍵值小),你需要判斷最後的樹是否一棵完全二叉樹,並且給出其層序遍歷的結果。

輸入格式:

輸入第一行給出乙個不超過20的正整數n;第二行給出n個互不相同的正整數,其間以空格分隔。

輸出格式:

將輸入的n個正整數順序插入乙個初始為空的二叉搜尋樹。在第一行中輸出結果樹的層序遍歷結果,數字間以1個空格分隔,行的首尾不得有多餘空格。第二行輸出「yes」,如果該樹是完全二叉樹;否則輸出「no」。

輸入樣例1:

9

38 45 42 24 58 30 67 12 51

輸出樣例1:
38 45 24 58 42 30 12 67 51

yes

輸入樣例2:
8

38 24 12 45 58 67 42 51

輸出樣例2:
38 45 24 58 42 12 67 51

no

太神了,他判斷id,簡直不要太優秀

當然還可以看順序儲存的,他正好就是 123456。。。,都是連著的,只要中間出現0,就說明不是完全的

#include#include#include#includetypedef long long ll;

using namespace std;

const int maxn=100;

struct node;

};queueq;

int val[maxn];

void insert(node* &now,int val)

if(val>=now->val)

insert(now->ls,val);

else

insert(now->rs,val);

}int main()

int wr=0,cnt=0;

head->id=1;

q.push(head);

while(q.size())

if(now->rs)

} for(int i=0;i1&&n2!=pow_(2,lev-2))

n1=q.size();

// printf("lev:%d n1:%d n2:%d wr:%d\n",lev,n1,n2,wr);

for(int i=0;ival;

q.pop();

if(now->ls!=null) q.push(now->ls);

if(now->rs!=null) q.push(now->rs);

if(now->ls==null&&now->rs!=null) wr=1;

} }*/

L3 010 是否完全二叉搜尋樹

l3 010.是否完全二叉搜尋樹 將一系列給定數字順序插入乙個初始為空的二叉搜尋樹 定義為左子樹鍵值大,右子樹鍵值小 你需要判斷最後的樹是否一棵完全二叉樹,並且給出其層序遍歷的結果。輸入格式 輸入第一行給出乙個不超過20的正整數n 第二行給出n個互不相同的正整數,其間以空格分隔。輸出格式 將輸入的n...

L3 010 是否完全二叉搜尋樹

時間限制 400 ms 記憶體限制 65536 kb 長度限制 8000 b 判題程式 standard 作者 陳越將一系列給定數字順序插入乙個初始為空的二叉搜尋樹 定義為左子樹鍵值大,右子樹鍵值小 你需要判斷最後的樹是否一棵完全二叉樹,並且給出其層序遍歷的結果。輸入格式 輸入第一行給出乙個不超過2...

L3 010 是否完全二叉搜尋樹 遞迴

輸出樣例1 38 45 24 58 42 30 12 67 51 yes輸入樣例2 838 24 12 45 58 67 42 51 輸出樣例2 38 45 24 58 42 12 67 51 no include include include using namespace std int k ...