自学数据结构和算法(5)

二叉树的遍历

分为先序、中序、和后序遍历。

这三种遍历都可以由递归序来得到:

(1)先序遍历(也是二叉树的深度优先遍历)是第一次到某个结点才打印;

(2)中序遍历是第二次到某个结点才打印;

(3)后序遍历是第三次到某个结点才打印。

 利用递归实现二叉树三序遍历十分简单,只需更换一下输出的顺序,如下:

#include<iostream>
using namespace std;class Node{
public:int value;Node* left = NULL;Node* right = NULL;
//由于下面写了带形参的构造函数,因此无参的
//C++不再提供默认构造函数,导致上面的两个
//指针的初始值不为NULL,因此要手动赋值
//或写无参构造函数 Node(int a){value = a;}
};void preOrder(Node* head){if(head == NULL)return;cout<<head->value<<' ';preOrder(head->left);preOrder(head->right);
}void inOrder(Node* head){if(head == NULL)return;inOrder(head->left);cout<<head->value<<' ';inOrder(head->right);
}void lastOrder(Node* head){if(head == NULL)return;lastOrder(head->left);lastOrder(head->right);cout<<head->value<<' ';
} int main()
{Node* head = new Node(5);head->left = new Node(3);head->right = new Node(8);head->left->left = new Node(2);head->left->right = new Node(4);head->left->left->left = new Node(1);head->right->left = new Node(7);head->right->left->left = new Node(6);head->right->right = new Node(10);head->right->right->left = new Node(9);head->right->right->right = new Node(11);preOrder(head);cout<<endl;inOrder(head);cout<<endl;lastOrder(head);return 0;
}

 这是上面建的树

 利用非递归方法实现:5.二叉树_哔哩哔哩_bilibili

视频的1:10:00左右。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/26561.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

谋合作、创新境 | 百度参观图为科技生产全链路

当代科技的发展不断催生出新的变革和机遇&#xff0c;百度作为全球顶尖的高科技公司&#xff0c;凭借其强大的创新基因&#xff0c;一直处于人工智能领域的最前沿。   近日&#xff0c;百度公司派出了一支专业团队来到了图为科技&#xff0c;对图为的研发技术及生产线进行了全…

《Maven实战》读后感

目录 一、一些思考1、为什么平时编写的Java项目也叫做Maven项目&#xff1f;2、平常的Java项目目录为什么长这样&#xff0c;可以改变目录结构吗&#xff1f;3、对于Maven项目来说&#xff0c;Maven能帮我们做什么&#xff1f;4、为什么一定需要Maven私服&#xff0c;不要行不行…

每天一道C语言编程:排队买票

题目描述 有M个小孩到公园玩&#xff0c;门票是1元。其中N个小孩带的钱为1元&#xff0c;K个小孩带的钱为2元。售票员没有零钱&#xff0c;问这些小孩共有多少种排队方法&#xff0c;使得售票员总能找得开零钱。注意&#xff1a;两个拿一元零钱的小孩&#xff0c;他们的位置互…

GoFrame v2.5 版本发布,企业级 Golang 开发框架

大家好啊&#xff0c;GoFrame 框架今天发布了 v2.5.0 正式版本啦&#xff01;&#x1f44f;&#x1f44f;&#x1f44f;&#x1f44f; 本次版本主要是对已有功能组件以及开发工具上的改进工作。其中&#xff0c;开发工具新增了 gf gen ctrl 命令&#xff0c;以规范化定义、开发…

orcle报错:TNS 监听程序无法为请求的服务器类型找到可用的处理程序

orcle报错&#xff1a;TNS 监听程序无法为请求的服务器类型找到可用的处理程序 方法一&#xff1a;配置文件修改 服务端的数据库是专用服务器,但是在客户端的tnsname.ora里配置中设置了连接方式为shared,这种情况下打开tnsnames.ora, 找到安装orcle的安装目录&#xff0c;点…

Java常用类(一)

⭐ 基本数据类型的包装类⭐ 包装类基本知识⭐ 包装类的用途⭐ 自动装箱和拆箱⭐ 自定义一个简单的包装类 ⭐ 字符串相关类 ⭐ 基本数据类型的包装类 我们之前写过八种基本数据类型并不是对象&#xff0c;为了将基本类型数据和对象之间实现互相转化&#xff0c;Java 为每一个基…

【EXCEL】数据录入的快捷键和正确格式

目录 0.环境 1.内容概述 2.具体内容 2.1数据录入换行换列的快捷键&#xff08;标准的数据输入方式&#xff09; 2.2日期的正确格式和使用&#xff08;标准日期格式与长日期&#xff09; 2.2.1 标准日期 2.2.2 长日期 2.2.3 显示当前日期和时间的快捷键 2.3百分比的正确…

stm32(串口知识点)

HAL串口发送/接收函数&#xff1a; HAL_UART_Transmit(); 串口发送数据&#xff0c;使用超时管理机制HAL_UART_Receive(); 串口接收数据&#xff0c;使用超时管理机制HAL_UART_Transmit_IT(); 串口中断模式发送 HAL_UART_Receive_IT(); 串口中断模式接收 HAL_UART_Transmit(…

人工智能LLM模型:奖励模型的训练、PPO 强化学习的训练、RLHF

人工智能LLM模型&#xff1a;奖励模型的训练、PPO 强化学习的训练 1.奖励模型的训练 1.1大语言模型中奖励模型的概念 在大语言模型完成 SFT 监督微调后&#xff0c;下一阶段是构建一个奖励模型来对问答对作出得分评价。奖励模型源于强化学习中的奖励函数&#xff0c;能对当前…

数据库三范式

MySQL系列文章 MySQL&#xff08;一&#xff09;基本架构、SQL语句操作、试图 MySQL&#xff08;二&#xff09;索引原理以及优化 MySQL&#xff08;三&#xff09;SQL优化、Buffer pool、Change buffer MySQL&#xff08;四&#xff09;事务原理及分析 MySQL&#xff08;五&a…

LoggerFactory is not a Logback LoggerContext but Logback is on the classpath

springboot项目报错如下&#xff1a; 这个错误是由于在你的Java代码中使用了Logback日志库&#xff0c;但是同时又存在与Logback竞争的其他日志库&#xff08;例如slf4j-simple&#xff09;导致的冲突。 要解决这个问题&#xff0c;你可以尝试以下几个步骤&#xff1a; 1. 检…

设计模式——享元模式

享元模式 定义 享元模式&#xff08;Flyweight Pattern&#xff09;是池技术的重要实现方式。 使用共享对象可以有效地支持大量的细粒度对象。 优缺点、应用场景 优点 可以大大减少应用程序创建对象的数量&#xff0c;降低程序内存占用。 缺点 提高了系统的复杂度&…