二叉樹的一些基本概念以及實戰

2021-10-04 10:56:56 字數 2266 閱讀 3031

二叉樹:

是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個結點...