当前位置: 首页 > news >正文

树与二叉树的遍历

我们平时用的树都是二叉树

一、一些基础概念 

1. 树就是一种:一对多的数据结构。树离不开递归,因为“树”就是“树”中有“树”。

二叉树就是 :空树  或者  每个结点的子结点个数小于等于2。

满二叉树: 除叶子结点外所有结点的子结点个数都为2并且所有的叶子结点都在同一层

2.一棵树只有一个根和若干个子树,子树之间是互不相交的。

3.结点拥有的子结点数称为节点的,度为0就称为叶子结点。 

4.树的度=这棵树里最大的度。

以上这棵树的度为3(注意:这是树,不是二叉树)

二、二叉树的结构

typedef struct treeNode{//结点结构
    int data;//结点数据
    struct treeNode* left,*right;//左右子树
   }treeNode,*treeNode;

三、二叉树的遍历

怎么记:一切以根结点为重!!!左在前右在后

先序遍历就是根结点在前面,中序遍历就是根结点在中间,后续遍历就是根结点在后面。 

 1.先序遍历

 若为空则返回空,否则:根->左子树->右子树

void preTraverse(treeNode* t){
    if(!t) return ;
    v.push_back(t->data);//先保存当前结点的数据
    preTraverse(t->left);//遍历左子树
    preTraverse(t->right);//遍历右子树
}

 2.中序遍历

若为空则返回空,否则:左子树->根->右子树 

void preTraverse(treeNode* t){
    if(!t) return ;
    preTraverse(t->left);//先遍历左子树
    v.push_back(t->data);//回退到当前结点,保存当前结点的数据
    preTraverse(t->right);//遍历当前结点的右子树
}

 3.后序遍历

若空则返回空,否则:左子树->右子树->根 

void preTraverse(treeNode* t){
    if(!t) return ;
    preTraverse(t->left);//先遍历当前结点左子树
    preTraverse(t->right);//遍历当前结点的右子树
    v.push_back(t->data);//当前结点的数据
}

 

相关文章:

  • 数字图像处理与Python语言实现-Box模糊CUDA实现
  • 4-002:如何使用 MySQL 的 EXPLAIN 语句进行查询分析?
  • 国内IPD项目管理系统评测:7款工具对比与解析
  • 深度学习笔记35_Inception v1算法实战与解析
  • Kubernetes安全:集群保护的最佳实践
  • Nuxt3 使用 ElementUI Plus报错问题
  • Python控制语句 ——break和continue
  • 聚划算!三个模型对比预测!CNN-GRU、GRU、CNN三模型多变量时序光伏功率预测
  • 基于威胁的安全测试值得关注,RASP将大放异彩
  • 社交软件频繁更新,UI 设计在其中扮演什么角色?
  • ffmpeg + opencv 打静态库编译到可执行文件中
  • 布谷直播系统源码开发实战:从架构设计到性能优化
  • DeepSeek-R1思路训练多模态大模型-Vision-R1开源及实现方法思路
  • OpenHarmony5.0分布式系统源码实现分析—软总线
  • 详细解析 ListView_GetEditControl()
  • UE5与U3D引擎对比分析
  • c-线程创建,同步互斥,互斥锁;
  • NLP技术介绍
  • 定义未来!广东天谱科技集团有限公司荣获“GAS科创奖-产品创新奖”!
  • linux 命令 head
  • 新建的网站需要维护吗/网站优化种类
  • 企业网站做百度小程序/友情链接价格
  • 哪个做砍价活动的网站好/aso关键词优化计划
  • 提出网站推广途径和推广要点/青岛关键词网站排名
  • 自己做个网站怎么做/精准营销名词解释
  • 宿迁企业做网站/网站建设选亿企网络