二叉搜尋樹的2層結點統計 模擬鍊錶

2021-10-10 14:57:46 字數 1223 閱讀 4252

二叉搜尋樹或者是一棵空樹,或者是具有下列性質的二叉樹:若它的左子樹不空,則左子樹上所有結點的值均小於或等於它的根結點的值;若它的右子樹不空,則右子樹上所有結點的值均大於它的根結點的值;它的左、右子樹也分別為二叉搜尋樹。

將一系列數字按給定順序插入一棵初始為空的二叉搜尋樹,你的任務是統計結果樹中最下面 2 層的結點數。

輸入在第一行給出乙個正整數 n (≤1000),為插入數字的個數。第二行給出 n 個 [−1000,1000] 區間內的整數。數字間以空格分隔。

在一行中輸出最下面 2 層的結點總數。

9 25 30 42 16 20 20 35 -5 28

用陣列模擬,開三個陣列,l,r,v

l, r 記錄節點的位置 v記錄節點的權值,也就是數

#include

#include

#include

#include

using

namespace std;

int a[

1005][

3];int b[

1005];

map<

int, vector<

int>> rap;

// r l 指向子節點的下標 v是下標為index的節點的資料

int r[

1005

], l[

1005

], v[

1005];

int index;

// 為u點插入x 現在的層數是level

void

dfs(

int&u,

int x,

int level)

else

else}}

intmain()

int x;

int root =0;

while

(n--

)int s = rap.

rbegin()

->second.

size()

; rap.

erase

(rap.

rbegin()

->first)

; s +

= rap.

rbegin()

->second.

size()

; cout << s;

return0;

}

二叉搜尋樹2

include using namespace std struct node void insertt node tree,int value 注意要加 取位址符 才能每次更新tree 否則不能實現對tree的改變 相當 於swap交換兩個值,不加取位址只能相當於乙個函式,裡邊的tree不會 時時...

二叉搜尋樹2

1.判斷bst的合法性 這裡是有坑的,如果很簡單的認為只需要節點與左子樹和右子樹進行比較的話,那麼 就是 boolean isvalidbst treenode root 但是這個演算法出現了錯誤,bst 的每個節點應該要小於右邊子樹的所有節點,下面這個二叉樹顯然不是 bst,因為節點 10 的右子...

二叉搜尋樹結點最小距離

給定乙個二叉搜尋樹的根結點 root,返回樹中任意兩節點的差的最小值。示例 輸入 root 4,2,6,1,3,null,null 輸出 1 解釋 注意,root是樹結點物件 treenode object 而不是陣列。給定的樹 4,2,6,1,3,null,null 可表示為下圖 4 2 6 1 ...