獲取二叉樹的葉子數、高度以及左右子樹的交換的C語言實現

        二叉樹的一些操作具有天然的遞歸性,本文實現了獲取二叉樹的葉子總數、獲取二叉樹高度以及交換二叉樹的左右子樹,代碼均已編譯通過。

        1.獲取二叉樹葉子總數:左子樹葉子總數+右子樹葉子總數

typedef struct BNode
{
    char value;  //類型假設爲char
    struct BNode *left;
    struct BNode *right;

} Node,*pNode,**ppNode;
int GetLeafeNum(pNode root)
{
    if(root==NULL)  //空節點葉子數爲0
    {
        return 0;
    }
    else if(root->left==NULL&&root->right==NULL)
    {
       return 1;
    }
    return GetLeafeNum(root->left)+GetLeafeNum(root->right);
}

        2.獲取二叉樹高度:左右子樹高度較大的+1

int GetHeight(pNode root)
{
    if(root==NULL)
    {
        return 0;
    }
    // max(left,right)+1; 左右子樹最高高度+1
    return (GetHeight(root->left)>=GetHeight(root->right)?(GetHeight(root->left)+1):(GetHeight(root->right)+1));
}

        3.交換左右子樹

void swap_tree(pNode root)
{
    if(root==NULL)
        return;
    else
    {
        pNode temp=root->left;
        root->left=root->right;
        root->right=temp;
        swap_tree(root->left);
        swap_tree(root->right);
    }
}


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