用佇列來求二叉樹的高度 寬度 層序遍歷

2021-09-27 08:16:23 字數 720 閱讀 8810

這裡其實用到的是同乙個思想,都是從根節點開始入隊,依次將左、右子節點出隊,外層迴圈用佇列非空進行判斷,當為空時,二叉樹遍歷完;內層迴圈是迴圈每一層的節點數,並同時將該層子節點入隊。

1、用佇列(非遞迴)求樹的高度

public static int treedepth2(treenode root)

int height = 0;

linkedlistqueue = new linkedlist<>();

queue.add(root);

while (!queue.isempty())

linkedlistqueue = new linkedlist<>();

queue.add(root);

int width = 0;

while (!queue.isempty())

list> res = new arraylist<>();

linkedlistqueue = new linkedlist<>();

queue.add(root);

while (!queue.isempty()){

int len = queue.size();

listlist = new arraylist<>();

for (int i = 0;i所以,這三種問題本質上是乙個東西,只是在迴圈的過程中進行了不同操作,從而實現了求高度、求寬度和層序遍歷。

用遞迴來求二叉樹的高度 寬度

1 遞迴來求二叉樹的高度 可以先寫出遞迴表示式 二叉樹高度height math.max height left height right 1 即左右子樹高度的最大值加1,即為樹的高度,以此不斷遞迴,最後求出樹的高度。其實也用到了dfs的思想 public static int treedepth ...

二叉樹層序遍歷 求二叉樹的層序遍歷

給定乙個二叉樹,返回該二叉樹層序遍歷的結果,從左到右,一層一層地遍歷 例如 給定的二叉樹是,該二叉樹層序遍歷的結果是 3 9,20 15,7 示例1 輸入 返回值 1 2 示例2輸入 返回值 1 2,3 4,5 解題思路 重點是如何把在一層的節點放到一起,設定乙個引數專門放一層的節點 class t...

求二叉樹寬度

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