C++数据结构之二叉树递归操作

c++ 构造二叉树 (递归方式) c++ 构造二叉树 (递归)一、二叉树的节点的链表存储结构二、创建一个二叉树 ** 一、二叉树的节点的链表存储结构 ** 二叉树的节点的存储结构 由 数据data、左指针left 和 右指针right 组成。 具体情况如下图所示: 二叉树节点的代码如下: template <typename T> class Node { public: T data; Node* left; Node* right; Node() { this->dat 阅读详情
 

#include<iostream>

using namespace std;

template <class T>
struct BiNode   //二叉树的结点结构
{
  T data;
  BiNode<T> *lchild, *rchild;
};
const int StackSize = 20;

template <class T>
class BiTree
{
    private:
        BiNode<T> *root;         //指向根结点的头指针
        BiNode<T> *Creat(  );     //构造函数调用
        void Release(BiNode<T> *root);   //析构函数调用

    public:
        BiTree( );             //构造函数,初始化一棵二叉树,其前序序列由键盘输入
        ~BiTree(void);         //析构函数,释放二叉链表中各结点的存储空间
        BiNode<T>* Getroot();  //获得指向根结点的指针
        void PreOrder(BiNode<T> *root);     //前序遍历二叉树
        void InOrder(BiNode<T> *root);      //中序遍历二叉树
        void PostOrder(BiNode<T> *root);    //后序遍历二叉树
        void LeverOrder(BiNode<T> *root);   //层序遍历二叉树
};

/*
 *前置条件:无
 *输    入:无
 *功    能:调用Create()函数
 *输    出:无
 *后置条件:无
*/
template<class T>
BiTree<T>::BiTree( )
{
 this->root = Creat( );
}

/*
 *前置条件:二叉树已存在
 *输    入:无
 *功    能:释放二叉链表中各结点的存储空间
 *输    出:无
 *后置条件:二叉树不存在
 */
template<class T>
BiTree<T>::~BiTree(void)
{
 Release(root);
}

/*
 *前置条件:二叉树已存在
 *输    入:无
 *功    能:获取指向二叉树根结点的指针
 *输    出:指向二叉树根结点的指针
 *后置条件:二叉树不变
 */
template<class T>
BiNode<T>* BiTree<T>::Getroot( )
{
 return root;
}

/*
 *前置条件:二叉树已存在
 *输    入:无
 *功    能:前序遍历二叉树
 *输    出:二叉树中结点的一个线性排列
 *后置条件:二叉树不变
 */
template<class T>
void BiTree<T>::PreOrder(BiNode<T> *root)
{
 if(root == NULL)  return;
 else{
  cout<<root->data<<" ";
        PreOrder(root->lchild);
  PreOrder(root->rchild);
 }
}

/*
 *前置条件:二叉树已存在
 *输    入:无
 *功    能:中序遍历二叉树
 *输    出:二叉树中结点的一个线性排列
 *后置条件:二叉树不变
 */
template <class T>
void BiTree<T>::InOrder (BiNode<T> *root)
{
    if (root == NULL)  return;      //递归调用的结束条件
    else{
        InOrder(root->lchild);    //中序递归遍历root的左子树
        cout<<root->data<<" ";    //访问根结点的数据域
        InOrder(root->rchild);    //中序递归遍历root的右子树
 }
}

/*
 *前置条件:二叉树已存在
 *输    入:无
 *功    能:后序遍历二叉树
 *输    出:二叉树中结点的一个线性排列
 *后置条件:二叉树不变
 */
template <class T>
void BiTree<T>::PostOrder(BiNode<T> *root)
{
    if (root == NULL)   return;       //递归调用的结束条件
    else{
        PostOrder(root->lchild);    //后序递归遍历root的左子树
        PostOrder(root->rchild);    //后序递归遍历root的右子树
        cout<<root->data<<" ";      //访问根结点的数据域
 }
}

/*
 *前置条件:二叉树已存在
 *输    入:无
 *功    能:层序遍历二叉树
 *输    出:二叉树中结点的一个线性排列
 *后置条件:二叉树不变
 */
template <class T>
void BiTree<T>::LeverOrder(BiNode<T> *root)
{
 const int MaxSize = 100;

 int front = 0;
 int rear = 0;  //采用顺序队列,并假定不会发生上溢

 BiNode<T>* Q[MaxSize];
    BiNode<T>* q;

 if (root == NULL) return;
 else{
  Q[rear++] = root;
  while (front != rear)
  {
   q = Q[front++];
       cout<<q->data<<" ";
      if (q->lchild != NULL)    Q[rear++] = q->lchild;
   if (q->rchild != NULL)    Q[rear++] = q->rchild;
  }
 }
}

/*
 *前置条件:空二叉树
 *输    入:数据ch;
 *功    能:初始化一棵二叉树,构造函数调用
 *输    出:无
 *后置条件:产生一棵二叉树
 */
template <class T>
BiNode<T>* BiTree<T>::Creat( )
{
 BiNode<T>* root;
 T ch;
 cin>>ch;
    if (ch == '#') root = NULL;
    else{
      root = new BiNode<T>;       //生成一个结点
         root->data = ch;
         root->lchild = Creat(  );    //递归建立左子树
         root->rchild = Creat(  );    //递归建立右子树
    }
    return root;
}

/*
 *前置条件:二叉树已经存在
 *输    入:无
 *功    能:释放二叉树的存储空间,析构函数调用
 *输    出:无
 *后置条件:二叉树不存在
 */
template<class T>
void BiTree<T>::Release(BiNode<T>* root)
{
  if (root != NULL){
   Release(root->lchild);   //释放左子树
      Release(root->rchild);   //释放右子树
      delete root;
  }
}


int main()
{
 BiTree<char> bt; //创建一棵树
 BiNode<char>* root = bt.Getroot( );  //获取指向根结点的指针

 cout<<"------递归前序遍历------ "<<endl;
 bt.PreOrder(root);
 cout<<endl;
 cout<<"------递归中序遍历------ "<<endl;
 bt.InOrder(root);
 cout<<endl;
 cout<<"------递归后序遍历------ "<<endl;
 bt.PostOrder(root);
 cout<<endl;
 cout<<"------层序遍历------ "<<endl;
 bt.LeverOrder(root);
 cout<<endl;
 return 0;
}

C++递归创建、非递归遍历二叉树的基本操作 最近学了二叉树,这个数据结构和它的名字一样,真是二叉。如果单纯的让我想这样的算法,以笔者的脑子想一辈子都想不出来。二叉树刚学完,老师又讲了图。 俗话说,不能在一棵树上吊死,那我选择在二叉树上吊死。关键是图还在下面扯着你,二叉树这个数据结构不会真的是憋死人。 下面,我将我各种查阅书籍与上网翻找得出的结果告诉大家,让大家能够清楚地了解二叉树的基本操作。 阅读详情

相关推荐

数据结构 -- 二叉树

这篇文章介绍的是经典的数据结构--二叉树,在这篇文章里介绍了几乎二叉树的所有操作。      二叉树给我们最重要的印象莫过于递归,因为这棵树就是递归的,所以,我在解决各个问题时大部分都用到了递归,代码简单且易于理解,好吧,这篇文章的代码有点长,贴出来吧:头文件:/* * dlut_bitree.h * * Created on: 2014年1月13日 * Author: DLU

张勤一 2631

二叉树C++实现详解(递归)

原文:http://blog.youkuaiyun.com/zlhy_/article/details/8872564 二叉树按照数据结构类型来划分属于树结构,在树结构中他又是比较简单而且具有理论研究的意义的一种数据结构。有很多树形结构都是基于二叉树的变种,所以对二叉树的学习与了解是很有必要的。根据笔者的经验,在学习数据结构的过程中要深刻的体会逻辑接口与物理存储实现的区别与联系。比如在之前的博客中有讲到

xiaoshengqdlg的专栏 3268

C++ 二叉树的遍历 前序 中序 后序 递归&非递归 层次

#include <iostream> #include <string> #include <queue> #include <stack> #include <math.h> using namespace std; typedef int datatype; class Node { public: datatype val; Node* left; Node* right; Node(datatype val) { th.

浪矢五金店 457

C++二叉树的创建、递归及非递归遍历(前、中、后、层序)

定义二叉树结点类型: typedef struct BinNode { ElementType data; BinNode *Left; BinNode *Right; }BinTree; 主函数: int main() { BinTree *CreatePre(BinTree* &BT); void InorderTraversal(BinTre...

MilkLeong的博客 1351

严蔚敏《数据结构》六类核心实验C++实现+图文报告(含链表、树、图、排序等)

这套资料直接对应严蔚敏《数据结构》教材教学进度,提供线性表、栈与队列、树与二叉树、图、查找、排序六大模块的完整上机实践支持。包含20多个可直接编译运行的C++工程,比如单链队列实现、哈夫曼编码生成、二叉树建立与先序/中序/后序遍历、结点数量统计、树深度计算、图的邻接表创建、深度优先与广度优先遍历、直接插入/选择/冒泡/快速排序算法实现、字符频次统计与翻译功能等。每个实验都配有独立文档说明,涵盖功能目标、算法逻辑、输入输出样例和运行结果分析。代码统一使用main.cpp入口,头文件head.h集中管理常用结构

w1x2y3的博客 248

深入掌握C++中的二叉树操作与遍历方法

在二叉树的实现中,每一个元素都可以被看作是一个节点。在C++中,一个典型的二叉树节点可以定义为一个结构体或类,包含数据域以及指向前驱和后继节点的指针。节点的定义是二叉树操作的基础。int value;// 数据域// 指向左子节点的指针// 指向右子节点的指针节点的属性通常包含节点值、指向左右子节点的指针,以及有时为了管理树结构而设置的父节点指针。节点值是存储在该节点中的具体数据,左右指针用于建立树状结构,父节点指针则在某些特定算法中使用,如在线索二叉树中。

weixin_42589700的博客 780

C++实现二叉树的递归遍历(详细步骤与代码实现)

我们知道数据的存储结构分为线性与非线性。线性就是1对1的结构,像栈与队列都属于线性结构。那什么是非线性的结构呢?非线性即1对n的结构这更符合常规情况,线性结构本质上属于非线性结构中的一种特殊形式,像树就属于非线性结构。但是树并不适合编码操作,需要将其转为二叉树,既然二叉树是一种数据存储的结构,那就涉及到数据遍历的问题。有关二叉树的遍历有三种方式,即先序遍历、中序遍历与后续遍历。 下面就根据上面的二叉树简单谈一下何为先序遍历、中序遍历与后序遍历: 1、先序遍历(DLR) ...

qq_41696018的博客 4956

告别玄学:用Multisim或LTspice仿真带你直观理解PFC的三种工作模式(CCM/DCM/CrM)

本文通过Multisim和LTspice仿真工具,详细解析了PFC(功率因数校正)的三种工作模式(CCM、DCM、CrM)的本质差异。从波形捕捉到参数优化,提供了实用的仿真技巧和工程实践策略,帮助工程师直观理解并优化PFC电路设计,提升THD和功率因数。

weixin_30363285的博客 395

数据结构C++——二叉树的遍历(递归和非递归)及一些简单操作

数据结构与算法分析(C++)——二叉树 文章目录数据结构与算法分析(C++)——二叉树一、前言二、二叉树的一些常见操作①二叉树的存储结构②二叉树的先序遍历③二叉树的中序遍历④二叉树的后序遍历⑤复制二叉树⑤计算二叉树的深度三、完整代码三、总结 一、前言 树的遍历操作需要和栈相结合,虽然C++中有许多关于数据结构的头文件可以直接拿来使用,但对于数据结构的初学者,栈的常见操作、基本原理、代码实现都应该了熟于心。 关于数据结构——栈的文章:链接: 数据结构与算法分析(C++)——栈. 二、二叉树的一些常见操作 ①二

qq_54162207的博客 7689

【深度学习】通俗易懂讲解循环神经网络LSTM

目录 1、循环神经网络(Recurrent Neural Networks) 2、长依赖存在的问题 3、LSTM 网络 4、LSTMs的核心思想 5、一步一步理解LSTM 6、LSTM的变种 7、总结 1、循环神经网络(Recurrent Neural Networks) 人对一个问题的思考不会完全从头开始。比如你在阅读本片文章的时,你会根据之前理解过的信息来理解下面看到的文字。...

Nieson2012的专栏 2729

实现 PDF 添加水印的五种方式

PDF(Portable Document Format,便携式文档格式)是一种流行的文件格式,它可以在多个操作系统和应用程序中进行查看和打印。在某些情况下,我们需要对 PDF 文件添加水印,以使其更具有辨识度或者保护其版权。本文将介绍如何使用 Spring Boot 来实现 PDF 添加水印的方式。

逸轩 6472

C++数据结构之二叉树非递归操作

#include using namespace std; const int MaxSize = 100; template           //二叉树的结点结构 struct BiNode {     T data;     BiNode *lchild,*rchild;     BiNode *btr;     int flag; }; template cl

Hy_Fighting的专栏 774

2024年数字IC秋招-格科微-数字电路设计工程师-笔试题

笔试题型:简答题(9个)笔试平台:牛客(电脑监控)笔试时间:2h。

qq_42135020的博客 1605

遍历二叉树(递归)

6.3.1遍历二叉树递归算法 自定义函数BiTree.h,主函数 未定义层序遍历

Xppal的博客 294

【ARM CoreLink 系列 7 -- TZC-400控制器简介】

为了确保内存能够正确识别总线的信号控制位,新增一个TrustZone地址空间控制器(TrustZone Address Space Controller,TZASC)组件来实现对内存地址的安全扩展,将内存区域划分为安全内存区域和非安全内存区域,安全世界可以访问安全内存和非安全内存,而普通世界只能访问非安全内存,如下图所示:图 1-1内存区域的划分是在系统启动时通过配置 TZASC 组件(TZC-400/TZC-380)来实现的。TZC-400由和使能情况;安全访问权限;Base地址;

CodingCos的博客 1633

基于YOLOv11的手术器械计数系统:从数据集构建到Web应用部署

m2cai16-tool数据集:包含15种腹腔镜手术器械的标注图像Cholec80数据集:包含80个胆囊切除手术视频,标注了7种器械SurgicalTools数据集:包含超过10,000张手术器械图像,涵盖21类常见器械手术剪(Scissors)止血钳(Hemostat)持针器(Needle Holder)手术刀(Scalpel)镊子(Forceps)拉钩(Retractor)吸引器(Suction)

YOLO 396

数据结构与算法--C++实现二叉树的基本操作

数据结构与算法–C++实现二叉树的基本操作 在学习数据结构与算法这门课中,老师布置了一个关于二叉树的实验作业。实验作业的要求如下所示: 经过了几天的不懈努力(到处学习补知识),终于能够实现二叉树实验。 下面就是该实验的过程,成果图以及代码: 主要内容:主要使用了循环递归的思想,其中还使用了链表,栈与队列的操作。 根据该二叉树图来创建二叉树。(图中的#是表示空结点) 效果图: 创建二叉树: 根据先序遍历的方法,依次输入权值来创建二叉树。 输出中序遍历: 中序遍历(左结点-根节点-右结点)–D G B A

小小城序员的博客 2009

【产品经理修炼之道】-如何搭建企业级账务系统?

笔者公司的业务模式具有一定的独特性,不同于我们常见的市面上供应链类公司的进销存模式。公司主要为各大银行和金融机构提供信贷领域的风控服务,客户主要通过请求公司的数据产品接口产生费用,可以简单地理解为请求一次接口收费0.5元,一个月若是有1w人请求同一个接口则公司需要收费5000元。

xiaoli8748的专栏 5405

数据结构 -- 树(附C++代码实现,前序,后序,中序遍历,树的深度,包括递归和非递归遍历 附完整C++代码)

二叉树是一种特殊的树结构,每个节点最多有两个子节点,分别称为左子节点和右子节点。结点的度:左右节点各为一个度叶子结点或者终端结点:度为0的结点树的度:结点的最大分支数树的深度(高度)---层数二叉树形态: 空树,根节点,根节点+左子树 根结点+右子树 根+左+右根据树的结点和树的形状,分为几个形态:斜树,满二叉树和完全二叉树。

m0_56350559的博客 925

R语言glm函数构建二分类logistic回归模型、epiDisplay包logistic.display函数获取模型汇总统计信息(自变量初始和调整后的优势比及置信区间,回归系数的Wald检验的p值

R语言glm函数构建二分类logistic回归模型(family参数为binomial)、使用epiDisplay包logistic.display函数获取模型汇总统计信息(自变量初始和调整后的优势比及置信区间,回归系数的Wald检验的p值)

statistics+insight+vista+power 1397

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

【数据结构】二叉树的深度优先遍历DFS和广度优先遍历BFS(含C++递归和非递归方式实现)

讲解了关于二叉树的遍历,涉及深度优先遍历和宽度优先遍历,从递归和非递归两个思路来进行实现。

weixin_50941083的博客 1338

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

C语言数据结构 中序线索二叉树的实现(树的初始化、树的带值创建、树的线索化、线索树的遍历)

IDE:Visual Studio 2019 声明:为了方便书写代码,用到了C++的引用调用特性和iostream作为输入输出,读者可以使用指针调用和scanf_s/print语句实现相同效果 tips:有疑问可以在下面交流,我会尽量回复的 头文件heads.h #pragma once #include "stdio.h" #include "iostream" #define OK 1 #define TRUE 1 #define FALSE 0 #define ERROR 0 #define OVER

ypx1269874756的博客 615

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

二叉树的遍历(c语言数据结构实验报告三)

二叉树的遍历一、实验目的或任务二、实验教学基本要求三、实验教学的内容或要求四、实验类型或性质五、实验开出要求六、实验所需仪器设备七、实验所用材料八、实验过程 实验项目中文名称:二叉树的遍历 实验项目英文名称:Binary tree traverse 实验项目编码:3 实验学时:5 适用专业:信息与计算科学、数学与应用数学 所属课程:数据结构 开课学院:理学院 开课学期:第5学期 教材及实验指导书: 耿国华主编,《数据结构—(第三版)》,电子工业出版社,2011年 一、实验目的或任务 通过指导学生上机实践,对

库蒂尼奥的博客 6559

C语言创建二叉树数据结构, 以及各种遍历

  RT,上数据结构课时写的, 注释后面再补上.  上课时, 听得不是很认真, 先放在这里, 等后面再来慢慢理解.  使用时, 首先会创建根结点, 依次创建左孩子, 左孩子.  输入0表示该结点为空.  创建左/右孩子的时候, 又把左/右孩子当作根结点, 递归创建属于它们的左右孩子. #include <stdio.h> #include <string.h> #...

weixin_30871905的博客 76

zzu数据结构实验(五) 二叉树的递归及非递归的遍历及其应用

本项目实现了二叉树的基本操作及应用,包括递归和非递归的前序、中序、后序遍历,以及求叶子节点数、深度、相似判断、子树交换、层序遍历和完全二叉树判断等功能。通过二叉链表存储结构,结合栈和队列辅助实现非递归遍历。代码采用模块化设计,包含必要的数据结构和状态码定义,并提供了完整的测试用例。项目已开源在GitHub,可作为数据结构学习和实践的参考资源。

做cv的小昊的博客 1179
上一篇: C++数据结构之二叉树非递归操作
下一篇: SQl数据类型基本知识
Hy_Fighting
博客等级 码龄15年 11粉丝 24原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值