使用遞迴的方法求樹高

2021-09-10 02:11:17 字數 980 閱讀 5480

使用遞迴的方法求樹高的思路:

主要有兩個問題需要解決:

第一,樹的高度如何表示和計算

第二,樹的分支如何處理

對於第乙個問題,求樹的高度可以分解為求樹的子樹的高度再加1,子樹的高度同樣等於子樹的子樹的高度加1,這樣就可以一層一層的向下分解,直到最後一層葉子節點,它沒有左右子樹了,這時它的高度是1,這也就是遞迴終止條件,然後向上返回樹的高度。

對於第二個問題,當樹只有左子樹或者右子樹時,直接求對應子樹的高度即可,如果左右子樹都存在的話,就需要判斷左子樹和右子樹哪個高,返回更高的數值。

例:

程式流程:

判斷節點1有兩個子樹,需要分別求出這兩個子樹的高度;程式進入節點1的左子節點2

判斷節點2有兩個子樹,分別求出這兩個子樹的高度,程式進入節點2的左子節點4

判斷節點4沒有左右子樹,返回1,程式回到節點2,程式進入節點2的右子節點5

判斷節點5沒有左右子樹,返回1,程式回到節點2,判斷節點2的左子樹高度1和右子樹高度1相同,返回樹高1+1,程式回到節點1,程式進入節點1的右子節點3

判斷節點3沒有左右子樹,返回1,程式回到節點1,判斷節點1的左子樹高度2和右子樹高度1,返回樹高2+1,程式結束

求樹高**:

typedef int elementtype;

typedef struct treenode* tree;

struct treenode;

int max(int a,int b)

int treeheight(tree t)

else if(t->lift==null && t->right!=null)

else if(t->lift!=null && t->right!=null)

else

return 1;

}

用遞迴方法求n!

求n!可以用遞推方法,即從1開始,乘2,再乘3.一直乘到n。這種方法容易理解,也容易實現。遞推法的特點是從乙個已知的事實出發,按一定規律推出下乙個事實,再從這個新的已知的事實出發,再向下推出乙個新的事實。這是和遞迴不同的。求n!也可以用遞迴方法,即5!4!5,而4!3!4,1!1.可用下面的遞迴公式...

遞迴方法求n 階乘

遞迴的定義 在定義乙個過程或函式時,出現呼叫本過程或者是本函式的成分,稱之為遞迴。通常需要用到遞迴的方法 定義是遞迴的。例如n fibonacci數列問題 資料結構是遞迴的 單鏈表的資料結構,二叉樹的資料結構 問題的求解方式是遞迴的 漢諾塔問題 用遞迴和非遞迴兩種方式求n 問題 include in...

Meta of Meta 求元方法遞迴

首先,我們解決乙個問題,我們有了第乙個方法。然後,我們想解決包含這個問題的一類問題,我們總結乙個元方法。然後,我們想知道怎麼樣找到一類問題的方法的方法,這是就是元方法的元方法。或者說,元元方法。這樣的乙個不斷上溯的過程,我稱之為求元方法遞迴。那麼我們該如何衡量這個元方法的業務 技術收益?元方法的收益...