question:假設二叉樹採用二叉鍊錶儲存結構,設計乙個非遞迴演算法求二叉樹的高度。
analysis:
1.用層次遍歷來獲得二叉樹的高度;code:2.對二叉樹進行層次遍歷,需要借助佇列;
3.每次遍歷到該層的最右邊的結點時,level+1;
4.該演算法的關鍵時,如何知道當前的結點是不是該層最後乙個結點(last ==rear);
//二叉鍊錶的結構
typedef
struct bitnodebitnode,
*bitree;
//層次遍歷二叉樹
intgetbitreeheigth
(bitree t)
if(p->rchild)
if(front==last)
}return level;
}
遞迴求二叉樹的高度
用遞迴求樹的高度,哎。平時很少用指標,寫起來挺吃力的 include include includetypedef struct bnode btnode int max int x,int y btnode create 建樹 return t void print btnode t int hi...
求解二叉樹的高度(遞迴 非遞迴)
遞迴方式 遞迴方式的求解過程很簡單,只需要將問題分解。首先,遞迴出口是什麼?毫無疑問,當樹節點為空時,我們就可以結束遞迴了。那麼當前樹的高度和其左子樹及右子樹的關係是什麼呢?樹的高度,定義為從根節點到葉子節點的最長路徑 因此當前樹深應該是自身節點所佔的一層高度加上左右子樹中深的高度。因此,有一下遞迴...
二叉樹非遞迴演算法
程式小白,希望和大家多交流,共同學習 非遞迴二叉樹借用棧 使用鏈棧,使用它的原因 1.需要使用先進後出的儲存結構 2.需要儲存資料個數不定 三種遍歷儲存的雖然都是相同的資料型別,但是使用的目的不一樣,所以使用的位置不一樣 先序遍歷 根據給定的根節點,直接訪問根節點 左結點,有左孩子的結點有兩重身份 ...