【数据结构/C++】树和二叉树_二叉链表

2023-12-05

#include <iostream>
using namespace std;
// 二叉链表
typedef struct BiTNode
{
  int data;
  struct BiTNode *lchild, *rchild;
  BiTNode()
  {
    lchild = NULL;
    rchild = NULL;
  }
} BiTNode;
// 初始化二叉链表
void InitBiTree(BiTNode *&T)
{
  T = NULL;
}
// 先序遍历
void PreOrderTraverse(BiTNode *T)
{
  if (!T)
  {
    return;
  }
  cout << T->data << " ";
  PreOrderTraverse(T->lchild);
  PreOrderTraverse(T->rchild);
}
// 中序遍历
void InOrderTraverse(BiTNode *T)
{
  if (!T)
  {
    return;
  }
  InOrderTraverse(T->lchild);
  cout << T->data << " ";
  InOrderTraverse(T->rchild);
}
// 后序遍历
void PostOrderTraverse(BiTNode *T)
{
  if (!T)
  {
    return;
  }
  PostOrderTraverse(T->lchild);
  PostOrderTraverse(T->rchild);
  cout << T->data << " ";
}
// 求树的高度(深度)
int Height(BiTNode *T)
{
  if (!T)
  {
    return 0;
  }
  int lh = Height(T->lchild);
  int rh = Height(T->rchild);
  return (lh > rh) ? (lh + 1) : (rh + 1);
}
// 层序遍历
#include <queue>
void LevelOrderTraverse(BiTNode *T)
{
  if (!T)
  {
    return;
  }
  queue<BiTNode *> q;
  // 根入队
  q.push(T);
  while (!q.empty())
  {
    // 获取当前队首
    BiTNode *p = q.front();
    cout << p->data << " ";
    // 队首离开
    q.pop();
    if (p->lchild)
    {
      q.push(p->lchild);
    }
    if (p->rchild)
    {
      q.push(p->rchild);
    }
  }
}
int main()
{
  BiTNode *root = new BiTNode;
  root->data = 1;
  BiTNode *lchild = new BiTNode;
  lchild->data = 2;
  BiTNode *rchild = new BiTNode;
  rchild->data = 3;
  root->lchild = lchild;
  root->rchild = rchild;
  BiTNode *lchild2 = new BiTNode;
  lchild2->data = 4;
  BiTNode *rchild2 = new BiTNode;
  rchild2->data = 5;
  lchild->lchild = lchild2;
  lchild->rchild = rchild2;
  PreOrderTraverse(root);
  cout << endl;
  LevelOrderTraverse(root);
  cout << endl;
  cout << Height(root) << endl;
  return 0;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【数据结构/C++】树和二叉树_二叉链表 的相关文章

随机推荐

  • 国产API调试插件:Apipost-Helper

    前言 Idea 是一款功能强大的集成开发环境 IDE 它可以帮助开发人员更加高效地编写 调试和部署软件应用程序 Idea 还具有许多插件和扩展 可以根据开发人员的需要进行定制和扩展 从而提高开发效率 今天我们就来介绍一款国产的API调试插件
  • BP-AdaBoost算法研究(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码及数据
  • 频次最高的38道selenium面试题及答案

    1 selenium的原理是什么 selenium的原理涉及到3个部分 分别是 浏览器 driver 一般我们都会下载driver client 也就是我们写的代码 client其实并不知道浏览器是怎么工作的 但是driver知道 在sel
  • ssh免密登录gitee

    文章目录 一 简介 二 实现流程 1 生成公钥和私钥 2 在Gitee上创建仓库 3 GoLand的连接Gitee 4 上传 实现本机与Gitee码云之间的免密码登录 通过SSH协议 用于通过Git与远程仓库进行通信 将本地仓库推送到远程仓
  • Python中查看对象的所有属性和方法以及查看属性是否存在

    Python中查看对象的所有属性和方法以及查看属性是否存在 作者 爱编程的小金毛球球 日期 2023年12月3日 Python提供许多的内置函数和模块来帮助开发人员查看对象的所有属性 例如 dir vars dict 等 dir 函数查看对
  • 重磅签约!美团携手用友推进数智化升级

    近期 用友成功签约北京三快在线科技有限公司 美团 债权融资管理项目 此次合作 将基于用友BIP全球司库 为美团构建多层级的集团授信管控体系 实现债权融资精细化 风险防控前置化 集团管控科学化 助力美团进行科学融资决策 全面提升融资效益 高效
  • 人体姿态估计算法

    人体姿态估计算法 1 什么是人体姿态估计 2 基于经典传统和基于深度学习的方法 2 1 基于经典传统的人体姿态估计算法 2 2 基于深度学习的人体姿态估计算法 OpenPose AlphaPose RMPE
  • “微流控芯片建模与肿瘤标志物/感染性疾病细胞分析:合成生物学的新前沿“

    在微流控芯片建模应用中 实现肿瘤标志物的识别通常包括以下步骤 设计和制备微流控芯片 根据需要检测的肿瘤标志物类型和检测要求 设计和制备具有特定功能的微流控芯片 芯片上固定抗体或抗原 将与待检测肿瘤标志物特异性结合的抗体或抗原固定在芯片的特定
  • 基于PaddleSeg开发的人像抠图web api接口

    前言 基于PaddleSeg开发的人像抠图web api接口 提取官方代码 适配各种系统 通过api的接口进行访问 环境要求 1 Python3 7以上 2 源码 文章最后下载 源码结构 测试module py中添加如下代码 if name
  • 【单载波调制方案】正交时序多路复用调制:分析和低复杂度接收机设计(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码 数据 文献下载
  • 开关电容转换器的合成器研究(Python代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Python代码实现
  • Python自动化测试之登录脚本的实现

    环境准备 前提已经安装好python pycharm 配置了对应的环境变量 1 安装selenium模块 文件 gt 设置 gt 项目 script gt python解释器 gt selenium 2 安装浏览器驱动器 以谷歌浏览器为例
  • EATON DPM-MC2通信模块

    EATON DPM MC2通信模块的产品特点包括 数据采集 能够采集电力系统或工业设备的数据 包括电流 电压 频率 功率因数等参数 以便实时监测和控制系统状态 远程监测 允许远程监测电力设备或自动化系统的性能和状态 对于远程操作 故障排除和
  • 用友与厦国会联合培训,探索智能会计时代业财融合成功模式

    在企业经营过程中 业务与财务之间的边界越来越模糊 企业的各项业务活动所形成的财务结果都会成为管理者经营决策的依据 但是很多企业财务部门与业务部门之间的断层明显 业财融合成为企业运营管理的重要发展方向 也是建设世界一流财务管理体系的重要一环
  • 对标世界一流!用友已与74家中央企业达成集团级合作!

    近年来 面对蓬勃兴起的新一轮科技革命和产业变革 国资国企贯彻落实党中央 国务院决策部署 坚持以建设世界一流企业为引领 持续深化国有企业改革 切实加大科技创新工作力度 扎实推进高质量发展 取得了阶段性的重要成效 加快推进数智化转型 发挥数据价
  • 用友BIP项目云,助力设计类项目管理高效推进

    11 1 设计类项目管理解决方案 设计是国家基础设施建设 房建建造 装备制造 武器研发 特种设备生产研发等产业链的一环 可分为工程设计 装备 设备设计 工业设计 目前国内设计行业经过几十年的发展 建设 目前已经到了整合发展和转型发展的窗口期
  • 龙芯loongarch64服务器编译安装tokenizers

    1 简介 Hugging Face 的 Tokenizers 库提供了一种快速和高效的方式来处理 即分词 自然语言文本 用于后续的机器学习模型训练和推理 这个库提供了各种各样的预训练分词器 如 BPE Byte Pair Encoding
  • BENTLY 125800-01 通讯输出接口组件

    BENTLY 125800 01 通讯输出接口组件 BENTLY 125800 01 通讯输出接口组件产品详情 Bently 125800 01 通讯模块的产品特点主要包括 机械振动监测 这种继电器模块通常用于监测旋转机械设备的振动水平 以
  • 打破卫浴行业冰山!九牧重构高端服务品牌“点线面”新秩序

    文 螳螂观察 作者 余一 说到服务 你首先会想到哪个品牌 海底捞大概率会是其中之一 一个餐饮品牌 不靠价格 口味出圈 而是凭借服务走向全球市场 古往今来或许也是头一家了 而无微不至的的服务 也成为了海底捞最突出的竞争优势 相较于产品 价格等
  • 【数据结构/C++】树和二叉树_二叉链表

    include