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樓:匿名使用者
題目意思是形態,與字母無關;只有根,子節點之分
二叉排序樹定義,二叉樹和二叉排序樹有啥區別
二叉排序樹 binary sort tree 又稱二叉查詢樹 binary search tree 亦稱二叉搜尋樹。是資料結構中的一類。在一般情況下,查詢效率比連結串列結構要高。定義一 一棵空樹,或者是具有下列性質的二叉樹 1 若左子樹不空,則左子樹上所有結點的值均小於它的根結點的值 2 若右子樹不空,...
二叉樹的層次遍歷演算法,二叉樹層次遍歷怎麼進行?
建立一個佇列q 將根放入佇列 while 佇列非空 求用c語言實現二叉樹層次遍歷的遞迴演算法,謝謝!二叉樹層次遍歷怎麼進行?設計一個演算法層序遍歷二叉樹 同一層從左到右訪問 思想 用一個佇列儲存被訪問的當前節點的左右孩子以實現層序遍歷。void hierarchybitree bitree root...
請問平衡二叉樹和二叉排序樹的關係
平衡二叉樹和二叉排序樹沒有關係,他們的定義都不相同。由於平衡二叉樹的設計是為了改進二叉排序樹的效能,所以他的插入和刪除按排序樹的來 討論 請問 平衡二叉樹和二叉排序樹的關係 看你的插入演算法是怎樣的了,平衡二叉樹未必是二叉排序樹,比如二路堆就可以實現為平衡二叉樹,且非二叉排序樹。平衡二叉樹和二叉排序...