二叉树的遍历及基本运算

这篇博客主要介绍了二叉树的遍历方法,包括先序、中序、后序递归遍历,以及非递归遍历和层序遍历。此外,还涉及了如何利用二叉树解决实际问题,如哈夫曼树的构建、编码和译码,以及计算二叉树的深度、叶子节点数、总节点数、层序遍历和交换左右子树等操作。
摘要由CSDN通过智能技术生成

二叉树的遍历及基本运算

一、实验目的:

1.深入理解二叉树的基本概念和递归程序设计方法。
2.熟练掌握二叉树在二叉链表存储结构中的常用遍历方法:先序、中序、后序递归遍历,了解先序、中序和后序非递归遍历及层序遍历。
3.用二叉树解决实际问题,如掌握构造哈夫曼树及其编码和译码的方法。

二、实验内容:

1.建立一棵二叉树,并对其进行遍历(先序、中序、后序),打印输出遍历结果;
2.建立一棵二叉树,求二叉数的树的深度、统计叶子结点的个数、统计总的结点个数、进行层序遍历、交换左右子树等;
3.哈夫曼编码译码系统。

三、实验要求

1.在本题下面提交源程序和实验运行结果截图。
2.建立一棵二叉树,并对其进行遍历(先序、中序、后序),打印输出遍历结果;

#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>    
    typedef struct Node//结构体  
    {
   
    	char data;
    	struct Node *LChild;
    	struct Node *RChild;
    } BiTNode,*BiTree;
    
    void InitList(BiTree *l)//初始化
    {
   
    *l= (BiTree)malloc(sizeof(BiTNode));
    (*l)->LChild = NULL;
    (*l)->RChild = NULL;
    }    
    void CreateBiTree(BiTree *bt) //先序创建二叉树 
    {
   
    	char ch;
    	ch = getchar();
    	if (ch == ' ') *bt = NULL;
    	else
    	{
   
    		*bt = (BiTree)malloc(sizeof(BiTNode));
    		(*bt)->data = ch;
    		CreateBiTree(&((*bt)->LChild));
    		CreateBiTree(&((*bt)->RChild));
    	}
    }    
    void PreOrder(BiTree root)//先序遍历 
    {
   
    	if (root != NULL)
    	{
   
    		printf("%c", root->data);
    		PreOrder(root->LChild);
    		PreOrder(root->RChild);
    	}
        
    void InOrder(BiTree root)//中序遍历 
    {
   
    	if (root != NULL)
    	{
   
    		InOrder(root
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值