資料結構 考研 二叉樹的寬度

2021-10-23 22:04:00 字數 813 閱讀 6153

求二叉樹的寬度,我們首先想到他是廣度(寬度)優先遍歷的專利,記錄每層結點數,取最大返回就是二叉樹的寬度,如果我們想要用非遞迴的辦法來解決的話,就需要設定乙個陣列來儲存每層的結點數,然後引用乙個 max 來記錄最大結點數。這樣的話就是相當於把非遞迴強行寫成了遞迴,遞迴只起到了遍歷的作用,所以此時更新 max 的時機可以是前中後任何乙個地方。

**如下:

#include#include#includeusing namespace std;

typedef struct nodetreenode,*tree;

//非遞迴

/*由根向下進行廣度優先遍歷,每遍歷一層,記錄該層寬度,最後返回最大的乙個寬度*/

int maxwidth(tree& t)

max = max > width ? max : width; //寬度更新

} return max;

}//遞迴

void width(tree& t,int k,int* width,int& max)

void createtree(tree& t)

} void levelorder(tree& t)

cout執行結果:

遞迴中的引用完全可以改為全域性變數。

int count[100];

int max = -1

void width(tree& t,int k)

這樣就看著舒服多了。

c 列印二叉樹 考研資料結構演算法之二叉樹

查詢二叉樹值為x的結點。查詢二叉樹中值為x的結點 求二叉樹的高度 int 列印二叉樹 void 輸出葉子結點 void 先序遍歷非遞迴演算法 演算法思想1 二叉樹的層次遍歷 層次遍歷 編寫在以bst為樹根指標的二叉搜尋樹上進行查詢值為item的結點的非遞迴演算法,若查詢成功能則由item帶回整個結點...

資料結構考研 樹與二叉樹(C語言)

typedef strcture btnode btnode 把樹轉換成二叉樹的樣子,進行儲存 typedef struct btnode btnode a1 child a2 a1 sibling null a2 sibling a3 a3 sibling a4 a4 sibling null 取...

資料結構 二叉樹 反轉二叉樹

include using namespace std define maxsize 1000 struct binary tree node class queue queue queue void queue push binary tree node btn binary tree node ...