7-2 是否完全二叉搜尋樹 (30 分)
將一系列給定數字順序插入乙個初始為空的二叉搜尋樹(定義為左子樹鍵值大,右子樹鍵值小),你需要判斷最後的樹是否一棵完全二叉樹,並且給出其層序遍歷的結果。
輸入第一行給出乙個不超過20的正整數n
;第二行給出n
個互不相同的正整數,其間以空格分隔。
將輸入的n
個正整數順序插入乙個初始為空的二叉搜尋樹。在第一行中輸出結果樹的層序遍歷結果,數字間以1個空格分隔,行的首尾不得有多餘空格。第二行輸出yes
,如果該樹是完全二叉樹;否則輸出no
。
9
38 45 42 24 58 30 67 12 51
38 45 24 58 42 30 12 67 51
yes
8
38 24 12 45 58 67 42 51
38 45 24 58 42 12 67 51
no
思路:根據完全二叉樹的下標性質,我們可以用陣列模擬,這樣可以大大減少**量,也很易於理解
ac**:
#include #include#include
#include
#include
#include
#include
#define inf 0x3f3f3f3f
#define frer() freopen("in.txt", "r", stdin)
#define frew() freopen("out.txt", "w", stdout)
using
namespace
std;
const
int maxn = 2097152 + 5
;int
n, m, num[maxn];
void insert(int
idx)
if(m > num[idx]) insert(idx * 2
);
else insert(idx * 2 + 1);}
intmain()
bool ok = true
;
int cnt = 0
;
for(int i = 1; ; ++i)
}else ok = false
; }
if(ok) cout << "
yes"
}
是否完全二叉搜尋樹(資料結構 二叉搜尋樹)
題目 將一系列給定數字順序插入乙個初始為空的二叉搜尋樹 定義為左子樹鍵值大,右子樹鍵值小 你需要判斷最後的樹是否一棵完全二叉樹,並且給出其層序遍歷的結果。輸入格式 輸入第一行給出乙個不超過20的正整數n 第二行給出n個互不相同的正整數,其間以空格分隔。輸出格式 將輸入的n個正整數順序插入乙個初始為空...
是否二叉搜尋樹PTA
本題要求實現函式,判斷給定二叉樹是否二叉搜尋樹。bool isbst bintree t 其中bintree結構定義如下 typedef struct tnode position typedef position bintree struct tnode 函式isbst須判斷給定的t是否二叉搜尋樹...
7 3 是否完全二叉搜尋樹
將一系列給定數字順序插入乙個初始為空的二叉搜尋樹 定義為左子樹鍵值大,右子樹鍵值小 你需要判斷最後的樹是否一棵完全二叉樹,並且給出其層序遍歷的結果 include include include include include using namespace std struct node stru...