1樓:假面
記n個節點的二叉樹形態個數為a[n]
1)0個節點的二叉樹只有1種形態,a[0]=0;1個節點的二叉樹只有1種形態,a[1]=1
2)n個節點(n>=2)的二叉樹有 a[n] = ∑ [m=0到n-1] ( a[m]*a[n-m-1] ) ,求和的每一項,分別表示根的左子樹為m個節點、右子樹為 n-m-1個節點的情況
剛好就是catalan數,直接用catalan數的公式:h(n)=c(2n,n)/(n+1)
擴充套件資料:
二叉樹不是樹的一種特殊情形,儘管其與樹有許多相似之處,但樹和二叉樹有兩個主要差別:
樹中結點的最大度數沒有限制,而二叉樹結點的最大度數為2;
2. 樹的結點無左、右之分,而二叉樹的結點有左、右之分。
性質:(3) 對於任意一棵二叉樹,如果其葉結點數為n0,而度數為2的結點總數為n2,則n0=n2+1;
(5)有n個結點的完全二叉樹各結點如果用順序方式儲存,則結點之間有如下關係:
若i為結點編號則 如果i>1,則其父結點的編號為i/2;
如果2*i<=n,則其左孩子(即左子樹的根結點)的編號為2*i;若2*i>n,則無左孩子;
如果2*i+1<=n,則其右孩子的結點編號為2*i+1;若2*i+1>n,則無右孩子。
(6)給定n個節點,能構成h(n)種不同的二叉樹。
h(n)為卡特蘭數的第n項。h(n)=c(2*n,n)/(n+1)。
(7)設有i個枝點,i為所有枝點的道路長度總和,j為葉的道路長度總和j=i+2i
遍歷是對樹的一種最基本的運算,所謂遍歷二叉樹,就是按一定的規則和順序走遍二叉樹的所有結點,使每一個結點都被訪問一次,而且只被訪問一次。由於二叉樹是非線性結構,因此,樹的遍歷實質上是將二叉樹的各個結點轉換成為一個線性序列來表示。
設l、d、r分別表示遍歷左子樹、訪問根結點和遍歷右子樹, 則對一棵二叉樹的遍歷有三種情況:dlr(稱為先根次序遍歷),ldr(稱為中根次序遍歷),lrd (稱為後根次序遍歷)。
在後序線索樹中找到結點的後繼分三種情況:
1 若結點是二叉樹的根,則其後繼為空;
2 若結點是其雙親的右孩子,或是其雙親的左孩子且其雙親沒有右子樹,則其後繼即為雙親結點;
3 若結點是其雙親的左孩子,且其雙親有右子樹,則其後繼為雙親右子樹上按後序遍歷列出的第一個結點。
2樓:匿名使用者
資料結構書上不是有嗎?
c(2n,n)-c(2n,n-1)
3個結點的二叉樹有幾種形態
3樓:demon陌
分別是:根-左-左;根-右-右;根-(一左一右);根-左-右;根-右-左。
其中 根-(一左一右)只有兩層,其他的都是三層。
每一層上的結點數都是最大結點數。而在一棵二叉樹中,除最後一層外,若其餘層都是滿的,並且或者最後一層是滿的,或者是在右邊缺少連續若干結點。具有n個結點的完全二叉樹的深度為floor(log2n)+1。
4樓:匿名使用者
5種,圖例以符號表樹形,0是結點,*是佔位符沒有意義***0
**/*\
*0***0
****0
***/
**0*/ 0
**0*/ 0
*\ **0
0 *\
**0*/ 0
0 *\
**0***\
****0
5樓:飛一樣的生活中
三個節點的二叉樹應該有六種形態。
6樓:匿名使用者
題目要求的意思是形態即a-b-c,a-c-b在一個方向的話算是一種形態
7樓:
重點在於形態,形態是一棵樹的樣子~
如此只有5種~
8樓:匿名使用者
題目意思是形態,與字母無關;只有根,子節點之分
平衡二叉樹是什麼,什麼是平衡二叉樹
八卦氣質 簡單說就是平衡二叉排序樹,也就是首先是二叉排序樹,然後還是平衡的。可以這樣理解 它要麼是一 棵空樹,要麼是它的左右兩個子樹的高度差的絕對值不超過1,並且左右兩個子樹都是一棵平衡二叉樹 什麼是 理想平衡二叉樹 科科科科少 若二叉樹有h層,上面h 1層都是滿的,第h層的結點不是集中存放在第h層...
二叉樹的遍歷問題,二叉樹的遍歷問題?
程式vs2003成功編譯執行 include stdafx.h include using namespace std typedef struct tree bintree 二叉樹的建立 bintree create char str,intpose,intsize return t void p...
求程式 線索二叉樹插入刪除運算,線索二叉樹的插入和刪除
include include malloc.h include windows.h define maxsize 20 規定樹中結點的最大數目 typedef struct nodebithptr bithptr q maxsize 建隊,儲存已輸入的結點的地址 bithptr creattree...