是否完全二叉搜尋樹 30分

2021-07-28 07:49:50 字數 1337 閱讀 8160

時間限制

400 ms

記憶體限制

65536 kb

**長度限制

8000 b

判題程式

standard

作者 陳越

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

輸入格式:

輸入第一行給出乙個不超過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

//完全二叉樹  

若設二叉樹的深度為h,除第 h 層外,其它各層 (1~h-1) 的結點數都達到最大個數,第 h 層所有的結點都連續集中在最左邊,這就是完全二叉樹。

#include using namespace std;

int n;

struct node

;struct node *creat(int x,struct node *root)

if(root->data < x)

root->l = creat(x, root->l);

else root->r = creat(x, root->r);

return root;

};void in(struct node *root)

}int ff;

void bfs(struct node *root)

if(now->r != null)

}printf("\n");

}int main()

ff = 0;

bfs(root);

if(ff)

printf("no\n");

else printf("yes\n");

}

是否完全二叉搜尋樹(30 分)

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

5 13 是否完全二叉搜尋樹 30分

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

7 2 是否完全二叉搜尋樹 (30 分)

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