王道機試指南 二叉樹與二叉搜尋樹

2021-09-11 19:41:55 字數 2607 閱讀 3367

二叉樹題目鏈結二叉樹

題意:在乙個完全二叉樹中給出乙個子樹的根和樹的最後乙個結點,求其子樹的結點個數。

思路:分為三種情況

其中2、3情況均為乙個滿二叉樹,只需要知道其子樹的深度就可以直接算得,而對於第一種情況,需要先計算出其最後一層的結點樹,再加上以上的結點數。

**如下:

#include

#include

using namespace std;

intlog2

(int x)

intcheck

(int m,

int n)

else

if(n>=

(m+1)*

pow(

2, ln_m)

)//情況2

else

if(npow(

2, ln_m)

)//情況3

return-1

;}intmain()

else

}return0;

}

二叉搜尋樹

題目鏈結二叉排序樹

題目大意:輸入一系列樹,建立二叉排序樹,並輸出其中序和後序遍歷。

**如下:

#include

#include

using namespace std;

const

int max =

101;

struct node

;int idx;

node t[max]

;int

build

(int ind,

int x)

else

if(t[ind]

.c>x) t[ind]

.l =

build

(t[ind]

.l, x)

;else

if(t[ind]

.c.r =

build

(t[ind]

.r, x)

;return ind;

}void

prevorder

(int ind)

void

inorder

(int ind)

void

postorder

(int ind)

intmain()

prevorder(0

);cout << endl;

inorder(0

);cout << endl;

postorder(0

);cout << endl;

}return0;

}

題目鏈結二叉搜尋樹

題目大意:判斷兩個序列構成的二叉搜尋樹是否相同。

思路:包含中序遍歷的兩個遍歷方式一定可以確定乙個二叉樹。

**如下:

#include

#include

#include

#include

using namespace std;

const

int max =

101;

struct node

;int idx;

node t[max]

;node a[max]

;char s[15]

;int vt1[15]

, vt2[15]

, va1[15]

, va2[15]

, pos;

intbuild

(int ind,

int x, node t)

else

if(t[ind]

.c>x) t[ind]

.l =

build

(t[ind]

.l, x, t)

;else

if(t[ind]

.c.r =

build

(t[ind]

.r, x, t)

;return ind;

}void

prevorder

(int ind, node t,

int a)

void

inorder

(int ind, node t,

int a)

bool check

(int a,

int b)

}return1;

}int

main()

pos =0;

prevorder(0

, t, vt1)

; pos =0;

inorder(0

, t, vt2)

;for

(int i=

0; i) pos =0;

prevorder(0

, a, va1);if

(check

(vt1, va1)

)else cout <<

"no"

<< endl;}}

return0;

}

二叉樹 還原二叉樹 二叉搜尋樹

先序遍歷的特點 先遍歷根結點,再遍歷左子樹,最後再遍歷右子樹 中序遍歷的特點 先遍歷左子樹,再遍歷根結點,最後再遍歷右子樹 後序遍歷的特點 先遍歷左子樹,再遍歷右子樹,最後再遍歷根結點 舉例 先序遍歷 a b d f g h i e c 中序遍歷 f d h g i b e a c 如上,根據先序遍...

樹 二叉樹 二叉搜尋樹

給定乙個二叉樹,判斷其是否是乙個有效的二叉搜尋樹。假設乙個二叉搜尋樹具有如下特徵 節點的左子樹只包含小於當前節點的數。節點的右子樹只包含大於當前節點的數。所有左子樹和右子樹自身必須也是二叉搜尋樹。示例 1 輸入 2 13輸出 true 示例 2 輸入 5 14 3 6輸出 false 解釋 輸入為 ...

排序二叉樹or搜尋二叉樹or查詢二叉樹

排序二叉樹,搜尋二叉樹,查詢二叉樹都是乙個意思,只是叫法不同而已。下面的文章中我們統稱為排序二叉樹。本文主要是針對高中資訊學,因此其中不涉及到指標,所有需要用指標的地方都直接使用陣列進行模擬。排序二叉樹定義 1 若左子樹不空,則左子樹上所有結點的值均小於或等於它的根結點的值 2 若右子樹不空,則右子...