求二叉樹第n層節點數

2022-02-02 08:42:55 字數 342 閱讀 5440

我的解法採用遞迴的思想,從0層開始,逐層往下遞迴。然後達到遞迴終止條件時(cur == goal - 1),就會把n-1層的所有兒子數都統計上來,**如下:

1

int countchildnum(tree *t, intn)2

910//cur:遞迴到的當前層, goal:目標層

11int countchild(tree *t, int cur, int

goal)

1224

else

2529

return

c;30 }

這裡有更好的解法:

輕鬆搞定面試中的二叉樹題目:

完全二叉樹求節點數

如上所示,由正整數1,2,3 組成了一顆特殊二叉樹。我們已知這個二叉樹的最後乙個結點是n。現在的問題是,結點m所在的子樹中一共包括多少個結點。比如,n 12,m 3那麼上圖中的結點13,14,15以及後面的結點都是不存在的,結點m所在子樹中包括的結點有3,6,7,12,因此結點m的所在子樹中共有4個...

二叉樹 完全二叉樹的節點數

給定一棵完全二叉樹 最後一層所有節點都在最左側,其餘所有層節點數都為2 h 求其節點數。最簡單的方法就是遍歷一遍,把節點數加起來,但時間複雜度太高。以最左邊的路徑長作為二叉樹的高度,對於乙個節點,如果左子樹高度和右子樹高度一樣,說明左子樹為滿二叉樹,此時把其左子樹的節點數計算出來,加入總數,對右子樹...

求二叉樹的葉子節點數目

1.設定乙個輔助計數變數作為葉子數目 2.分別遞迴訪問左右子樹,當結點的左右子樹都為空時,計數變數加1 3.得到計數變數的值即為葉子數目 typedef struct binarynodebinarynode param int leafnum 傳入計數變數的位址,通過指標修改變數的值 leafnu...