將一系列給定數字順序插入乙個初始為空的二叉搜尋樹(定義為左子樹鍵值大,右子樹鍵值小),你需要判斷最後的樹是否一棵完全二叉樹,並且給出其層序遍歷的結果。
輸入格式:
輸入第一行給出乙個不超過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個正整數順序插入乙個初始為空的二叉...