二叉树算法的基本操作

Posted 嵌入式那点事儿

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二叉树算法的基本操作相关的知识,希望对你有一定的参考价值。

typedef int BTDataType;

typedef struct BinaryTreeNode
{

    BTDataType data;
    struct BinaryTreeNodeleft;
    struct BinaryTreeNoderight;
}BT;

递归实现二叉树的前序、中序、后序遍历

//前序遍历 
void PrevOrder(BT* root)
{
    if(root==NULL)
    {   
        printf("NULL ");
        return;
    }
    printf("%d ",root->data);
    PrevOrder(root->left);
    PrevOrder(root->right);
 } 

//中序遍历
void InOrder(BT* root)
{
    if(root==NULL)
    {
        printf("NULL ");
        return;
    }
    InOrder(root->left);
    printf("%d ",root->data);
    InOrder(root->right);
 } 

//后序遍历
void PostOrder(BT* root)
{
    if(root==NULL)
    {   
        printf("NULL ");
        return;
    }
    PostOrder(root->left);
    PostOrder(root->right);
    printf("%d ",root->data);
 }  

遍历法计算节点个数

int size=0;
void TreeSize(BT* root)
{
    if(root==NULL){
        return;
    }
    size++; 
    TreeSize(root->left);
    TreeSize(root->right);
 } 

分治法计算节点数

int TreeSize2(BT* root)
{
    if(root==NULL)
    {
        return 0;
     } 
    return 1+TreeSize2(root->left)+TreeSize2(root->right);
}

计算叶子节点数

int BTreeLeafSize(BT* root)
{
    if(root==NULL)
    {
        return 0;
    }

    if(root->left==NULL&&root->right==NULL)
    {
        return 1;
    }

    return BTreeLeafSize(root->left)+BTreeLeafSize(root->right);
}

计算第K层的节点数(root为第一层)

int BTreeKLeveLSize(BT* root,int K) 
{
    if(root==NULL)
    {
        return 0;
    }

    if(K==1)
    {
        return 1;
    }

    return BTreeKLeveLSize(root->left,K-1)+BTreeKLeveLSize(root->right,K-1);
}

找到为x的节点

BT* TreeFind(BT* root,int x)
{
    if(root==NULL)
        return NULL;
    if(root->data==x)
        return root;

    BT* ret=TreeFind(root->left,x);
    if(ret!=NULL)
    {
        return root;
    }

    ret=TreeFind(root->right,x);
    if(ret!=NULL)
    {
        return root;
    }
    return NULL;

Stay hungry,Stay Foolish。

求知若饥,虚心若愚


以上是关于二叉树算法的基本操作的主要内容,如果未能解决你的问题,请参考以下文章

Java实现二叉树简单算法操作

数据结构与算法————二叉树全面总结

数据结构与算法————二叉树全面总结

数据结构与算法————二叉树全面总结

编程实现以上二叉树中序遍历操作,输出遍历序列,求写代码~~

数据结构与算法————二叉树全面总结