演算法學習15 求二叉樹的最大寬度

2021-10-21 14:02:20 字數 930 閱讀 2798

建立乙個雜湊表,儲存每個節點和節點所在的層數。將頭結點和他的層數1先記入雜湊表中。接下來就是按照寬度優先遍歷的順序,按層逐個遍歷。而且再將左右孩子推入佇列的過程中,將節點所在層的資訊記錄到雜湊表中。遍歷的過程中記錄節點的當前所在層,如果該節點與之前遍歷的在同一層,則該層節點數增加,如果與之前遍歷的不在同一層,說明進入下一層,需要將記錄的節點數與之前的最大寬度取最大值,然後當前層數加一,當前層節點數置為1

完整**

#

include

#include

#include

#include

using

namespace std;

//結構體定義

class

tree};

intgetmaxwidth

(tree* head)

queue> q;

unordered_map,int

> levelmap;

levelmap.

insert()

; q.

push

(head)

;int curlevel =1;

int curnode =0;

int m = int_min;

while

(!q.

empty()

)else

if(head->left !=

nullptr))

; q.

push

(head->left);}

if(head->right !=

nullptr))

; q.

push

(head->right);}

}return

max(m,curnode);}

intmain()

求二叉樹寬度

題目 乙個二叉樹採用二叉鍊錶儲存,設計乙個函式計算這個二叉樹的寬度 解題思路 採用層次遍歷,將每乙個結點的資訊儲存在陣列中,結點的資訊包括這個結點的層數,以及結點的左右子樹,資料型別 為char型字元 然後對這個陣列進行遍歷,層號數目最多的即為該二叉樹最大寬度處的層號,然後計算這個層號的數目,即為最...

二叉樹最大寬度

題目描述 給定乙個二叉樹,編寫乙個函式來獲取這個樹的最大寬度。樹的寬度是所有層中的最大寬度。這個二叉樹與滿二叉樹 full binary tree 結構相同,但一些節點為空。每一層的寬度被定義為兩個端點 該層最左和最右的非空節點,兩端點間的null節點也計入長度 之間的長度。方法一 definiti...

二叉樹最大寬度

二叉樹的寬度 即具有結點數最多的那一層的結點數 思路 在二叉樹的層次遍歷演算法的基礎上修改 include include include using namespace std typedef char elemtype typedef struct bitnode bitree 建立二叉樹 vo...