PTA 資料結構 是否完全二叉搜尋樹

2022-03-03 14:02:42 字數 1369 閱讀 3187

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...