二叉樹:
是n(n>=0)個節點的有限集合,該集合或者為空集(稱為空二叉樹),或者由乙個根節點和兩棵互不相交的、分別稱為根節點的左子樹和右子樹的二叉樹組成。
滿二叉樹:
如果乙個二叉樹中的任何結點要麼度數為0,要麼度數為2,則此二叉樹為滿二叉樹
完全二叉樹:
如果一棵二叉樹中,只有最下面兩層的節點的度數小於2,其餘各層的度數都等於2,並且最下面一層的節點都集中在最左邊的若干位置上,則此二叉樹稱為完全二叉樹。注意:完全二叉樹不一定是滿二叉樹。
二叉樹的性質1:
在二叉樹的第i
層上至多有2的i-1
次方個節點。(i
>=1;且根節點定義為第1層)
二叉樹的性質2:
深度為k的二叉樹最多有2的k次方-1個節點(k>=1;即根節點所處深度為1)
二叉樹的性質3:
對任何乙個二叉樹t,如果其終端節點(度數為0的節點)數為n0
,度為2的節點數為n2
,則n0=n2+1
.
二叉樹性質4:
具有n個節點的完全二叉樹的深度為不大於logn的最大整數+1.
計算葉子數
#include
using namespace std;
typedef
char datatype;
//二叉樹資料結構
struct node
;typedef
struct node *bitree ;
/*建立二叉樹
函式名:createbitree
引數:無
返回值:二叉樹根結點指標
*/bitree createbitree
(void
)return root ;
}void
visit
(bitree t)
intcountleaf
(bitree root)
}int
main
(void
)
交換左右節點
#include
using namespace std;
typedef
char datatype;
//二叉樹資料結構
struct node
;typedef
struct node *bitree ;
/*建立二叉樹
函式名:createbitree
引數:無
返回值:二叉樹根結點指標
*/bitree createbitree
(void
)return root ;
}void
changelr
(bitree root)
if(root->rchild !=
null)}
void
visit
(bitree t)
//輸出結點t的資料
void
inorder
(bitree root)
intmain
(void
)
計算有兩個孩子的結點個數
#include
using namespace std;
typedef
char datatype;
//二叉樹資料結構
struct node
;typedef
struct node *bitree ;
/*建立二叉樹
函式名:createbitree
引數:無
返回值:二叉樹根結點指標
*/bitree createbitree
(void
)return root ;
}void
visit
(bitree t)
intcountfullnode
(bitree root)
}int
main
(void
)
二叉樹的一些基本概念彙總
子樹 只要包含了乙個節點,就必須包含這個節點下的所有節點 子結構 包含了乙個節點,可以只取左子樹或者右子樹,或者都不取 二叉樹的深度 高度 max 左子樹深度,右子樹深度 1 節點的度 該節點的分支的個數 度為0,1,2 節點的種類 根節點葉子節點 度為0 分支節點 度不為0的節點 孩子節點 兄弟節...
二叉樹 基本概念
1.二叉樹的定義 二叉樹的定義是以遞迴形式給出的 一棵二叉樹是結點的乙個有限集合,該集合或者為空,或者是由乙個根節點加上兩棵分別稱為左子樹和右子樹的 互不相交的二叉樹組成。二叉樹有5種基本形態,如圖1所示,任何複雜的二叉樹都是這5種基本形態的復合,其中圖 a 是空二叉樹,圖 b 是單結點的二叉樹,圖...
二叉樹基本概念
五種形態 1.空二叉樹 2.僅有根節點的二叉樹 3.右子樹為空的二叉樹 4.左子樹為空的二叉樹 5.左右子樹都是非空的二叉樹 二叉樹的術語 節點 度 葉子 雙親 兄弟 孩子 子孫 有序樹 無序樹 二叉樹的五種性質 1.二叉樹的第i層至多又2 i 1 個結點 2.深度為k的二叉樹至多有2 k 1個結點...