L3 1 是否完全二叉搜尋樹 30分

2021-10-25 07:51:40 字數 1445 閱讀 2061

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

輸入格式:

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

輸出格式:

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

輸入樣例1:

938 45 42 24 58 30 67 12 51

輸出樣例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

using

namespace std;

struct treenode };

void

insert

(int v,treenode*

& root)

treenode* y;

treenode* x=root;

while

(x!=

null

)else}if

(v>y-

>val)

else

}void

bfs(treenode* root)

int print=0;

while

(!q.

empty()

)else

printf

("%d"

,rt-

>val);if

(rt-

>left)

if(rt-

>right)

}putchar

('\n');

}int

judge

(treenode* root)

while

(!q.

empty()

) q.

pop();

}return1;

}int

main()

bfs(root)

;printf

("%s\n"

,judge

(root)

?"yes"

:"no");

return0;

}

是否完全二叉搜尋樹 30分

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

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

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

L3 010 是否完全二叉搜尋樹 30分

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