【数据结构】【仅代码】二叉树

简介: 【数据结构】【仅代码】二叉树

代码内容包括:二叉树的遍历(先序、中序、后序) 二叉树的创建(先序) 以及二叉树深度和叶子数目的求法


</details>
#include <stdio.h>
#include <stdlib.h>
typedef char dataType;
typedef struct node{
    dataType data;
    struct node *lchild,*rchild;
}BinTree;
/*---创建二叉树---*/
BinTree *CreateBinTree()
{/*先序建立一个二叉树链表*/
    BinTree *bt = NULL;
    char ch;
    ch = getchar();
    if(ch!='#')
    {
        bt = (BinTree *)malloc(sizeof(BinTree));
        bt->data = ch;
        bt->lchild = CreateBinTree();
        bt->rchild = CreateBinTree();
    }
    return bt;
}
void  endprintfBinTree(BinTree *bt)
{
    if(bt != NULL)
    {/*---后序二叉树遍历---*/
        endprintfBinTree(bt->lchild);
        endprintfBinTree(bt->rchild);
        printf("%c",bt->data);
    }
}
void  firstprintfBinTree(BinTree *bt)
{
    if(bt != NULL)
    {/*---先序二叉树遍历---*/
        printf("%c",bt->data);
        firstprintfBinTree(bt->lchild);
        firstprintfBinTree(bt->rchild);
    }
}
void  middelprintfBinTree(BinTree *bt)
{
    if(bt != NULL)
    {/*---中序二叉树遍历---*/
        middelprintfBinTree(bt->lchild);
        printf("%c",bt->data);
        middelprintfBinTree(bt->rchild);
    }
}
/*---按中序遍历的方法求叶子节点的总数---*/
void CountLeaf(BinTree *t,int* count)
{
    if(t)
    {
        if(!(t->lchild)&&!(t->rchild))
        {
            (*count)++;
        }
         CountLeaf(t->lchild,count);
         CountLeaf(t->rchild,count);
    }
}
/*---求二叉树深度---*/
int  Depth(BinTree *t)
{
    int h1,hr;
    if(!t) return 0;
    else
    {
        h1 = Depth(t->lchild);
        hr = Depth(t->rchild);
        if(h1>=hr) return h1+1;
        else       return hr+1;
    }
}
int main()
{
    BinTree *bt;
    int a = 0;
   bt =  CreateBinTree();
    firstprintfBinTree(bt);
    middelprintfBinTree(bt);
    endprintfBinTree(bt);
    CountLeaf(bt,&a);
    printf("%d",a);
    printf("\n%d",Depth(bt));
}

相关文章
|
2天前
|
存储 编译器 C++
【初阶数据结构】掌握二叉树遍历技巧与信息求解:深入解析四种遍历方法及树的结构与统计分析
【初阶数据结构】掌握二叉树遍历技巧与信息求解:深入解析四种遍历方法及树的结构与统计分析
|
2天前
【高阶数据结构】二叉树进阶探秘:AVL树的平衡机制与实现详解(三)
【高阶数据结构】二叉树进阶探秘:AVL树的平衡机制与实现详解
|
2天前
【高阶数据结构】二叉树进阶探秘:AVL树的平衡机制与实现详解(二)
【高阶数据结构】二叉树进阶探秘:AVL树的平衡机制与实现详解
|
2天前
|
存储
【高阶数据结构】二叉树进阶探秘:AVL树的平衡机制与实现详解(一)
【高阶数据结构】二叉树进阶探秘:AVL树的平衡机制与实现详解
|
2天前
【高阶数据结构】深度探索二叉树进阶:二叉搜索树概念及其高效实现(三)
【高阶数据结构】深度探索二叉树进阶:二叉搜索树概念及其高效实现
|
2天前
|
存储
【高阶数据结构】深度探索二叉树进阶:二叉搜索树概念及其高效实现(二)
【高阶数据结构】深度探索二叉树进阶:二叉搜索树概念及其高效实现
|
2天前
【高阶数据结构】深度探索二叉树进阶:二叉搜索树概念及其高效实现(一)
【高阶数据结构】深度探索二叉树进阶:二叉搜索树概念及其高效实现
|
1月前
|
存储 机器学习/深度学习
【数据结构】二叉树全攻略,从实现到应用详解
本文介绍了树形结构及其重要类型——二叉树。树由若干节点组成,具有层次关系。二叉树每个节点最多有两个子树,分为左子树和右子树。文中详细描述了二叉树的不同类型,如完全二叉树、满二叉树、平衡二叉树及搜索二叉树,并阐述了二叉树的基本性质与存储方式。此外,还介绍了二叉树的实现方法,包括节点定义、遍历方式(前序、中序、后序、层序遍历),并提供了多个示例代码,帮助理解二叉树的基本操作。
47 13
【数据结构】二叉树全攻略,从实现到应用详解
|
1天前
|
存储 算法 调度
数据结构--二叉树的顺序实现(堆实现)
数据结构--二叉树的顺序实现(堆实现)
|
1天前
|
算法 开发者 计算机视觉
燃爆全场!Python并查集:数据结构界的网红,让你的代码炫酷无比!
在编程的世界里,总有一些数据结构以其独特的魅力和高效的性能脱颖而出,成为众多开发者追捧的“网红”。今天,我们要介绍的这位明星,就是Python中的并查集(Union-Find)——它不仅在解决特定问题上大放异彩,更以其优雅的设计和强大的功能,让你的代码炫酷无比,燃爆全场!
7 0