C語言 數據結構 樹、二叉樹

1、二叉樹簡介:二叉樹是每個結點最多有兩個子樹的樹結構。通常子樹被稱作“左子樹”(left subtree)和“右子樹”(right subtree)。

相關知識:

樹的深度:樹中最大的結點層。

結點的度:結點子樹的個數。

樹的度: 樹中最大的結點度。

葉子結點:也叫終端結點,是度爲 0 的結點;

分枝結點:度不爲0的結點;

滿二叉樹:除了葉子節點外,爲一個節點都有左右子樹的二叉樹,每一層都滿的二叉樹。

完全二叉樹:樹中只有最後一層有空缺且從右向左連續空缺的二叉樹。

平衡二叉樹:又稱AVL樹,數中的每個節點左右子樹高度差最多不想差1。

把一棵完全二叉樹從上到下,從左到右依次編號,其中編號爲i的點(1<i<n),若滿足2i<n則該節點的左子樹爲2i,右子樹爲2i+1.

2、二叉樹性質:

(1) 在非空二叉樹中,第i層的結點總數不超過{\color{Red} 2^{i-1}},i≥1。

(2) 深度爲h的二叉樹最多有{\color{Red} 2^{h-1}}個結點(h>=1),最少有{\color{Red} h}個結點。

(3) 對於任意一棵二叉樹,如果其葉結點數爲N_{0},而度數爲2的結點總數爲N_{2},則{\color{Red} N_{0}=N_{2}+1}

(4) 具有n個結點的完全二叉樹的深度爲{\color{Red} [log_{2}n]+1}

(5)把一棵完全二叉樹從上到下,從左到右依次編號,其中編號爲i的點(1<i<n),若滿足2i<n則該節點的左子樹爲{\color{Red} 2i},右子樹爲{\color{Red} 2i+1}

3、二叉樹的聲名與創建:遞歸建樹。

typedef struct binarytree
{   
	char nValue;
    struct binarytree *pleft;
    struct binarytree *pright;
}bitree;


void CreateBiTree(binarytree **pTree)
{
    char nNum;
    scanf("%c",&nNum);

    if(nNum == '0')return;

	//根
	*pTree = (binarytree*)malloc(sizeof(binarytree));
	(*pTree)->nValue = nNum;
	(*pTree)->pleft = NULL;
	(*pTree)->pright = NULL;

    //左
    CreateBiTree(&((*pTree)->pleft));

    //右
    CreateBiTree(&((*pTree)->pright));
}

4、二叉樹的遍歷:

(1)先序遍歷:首先訪問根,再先序遍歷左子樹,最後先序遍歷右子樹。(根左右)

void PreorderTraversal(binarytree *pTree)
{
    if(pTree == NULL)return;

    //根
    printf("%d ",pTree->nValue);

    //左
    PreorderTraversal(pTree->pleft);

    //右
    PreorderTraversal(pTree->pright);
}

(2)中序遍歷:首先中序遍歷左子樹,再訪問根,最後中序遍歷右子樹。(左右根)

void InorderTraversal(binarytree *pTree)
{
    if(pTree == NULL)return;

    //左
    InorderTraversal(pTree->pleft);
    //根
    printf("%d ",pTree->nValue);
    //右
    InorderTraversal(pTree->pright);
}

(3)後序遍歷:首先後序遍歷左子樹,再後序遍歷右子樹,最後訪問根。(左右根)

void LastorderTraversal(binarytree *pTree)
{
    if(pTree == NULL)return;

    //左
    LastorderTraversal(pTree->pleft);
    //右
    LastorderTraversal(pTree->pright);
    //根
    printf("%d ",pTree->nValue);
}

(4)層序遍歷:即按照層次訪問,先訪問根,訪問左右兒子,再訪問兒子的兒子。

二叉樹遍歷示例:

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章