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

树与二叉树的遍历

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

一、一些基础概念 

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);//当前结点的数据
}

 


http://www.kler.cn/a/584164.html

相关文章:

  • Vue3中全局使用Sass变量方法
  • JetBrains(全家桶: IDEA、WebStorm、GoLand、PyCharm) 2024.3+ 2025 版免费体验方案
  • 【拓扑排序】火星词典
  • SpringS ecurity测试登录接口报错
  • Visual Studio关闭警告
  • 16.AVL树实现
  • 自动化测试 | Python+PyCharm+Google Chrome+Selenium 环境安装记录
  • 数据可视化图表库LightningChart JS 全新发布v7.0——提高视觉质量
  • SpringBoot为什么流行以及能解决什么问题?
  • 个人学习编程(3-13) 刷题2
  • Linux下用多进程在GPU上跑Pytorch模型问题
  • python -面试题--算法
  • 安科瑞ACCU-100微电网协调控制器:助力绿色能源系统运行
  • JVM之基础知识
  • 以实现生产制造、科技研发、人居生活等一种或多种复合功能的智慧油站开源了
  • 蓝桥杯 互质数的个数
  • Axure RP下载安装和简单使用教程
  • 浙江大学:DeepSeek行业应用案例集(153页)(文末可下载PDF)
  • Python爬虫:从人民网提取视频链接的完整指南
  • 使用1Panel一键搭建WordPress网站的详细教程(全)