二叉树的遍历(前序 中序 后序)

一、前序遍历

        顺序为: 根-->左子树---->右子树 

        先访问根节点,再递归进入根节点的左子树(通过递归不断往下遍历),直到访问的节点没有左子树,此时递归进入其右子树(通过递归进行相同操作),直至所有的节点都被访问过,访问的顺序即为前序遍历。

        前序遍历的代码: (可以根据前序遍历的代码推出前序遍历的过程)

typedef struct BiTNode{int data;struct BiTNode* lchild, * rchild;
}BiTNode,*BiTree;void PreOrder(BiTree T) // 前序遍历
{if (T!=NULL){visit(T);                访问根结点PreOrder(T->lchild);     //递归遍历左子树PreOrder(T->rchild);     //递归遍历右子树}
}

        前序遍历的过程(图示)

        以如下二叉树为例:进行先访问根,再左子树,右子树的顺序遍历(递归)

 前序遍历的访问顺序:

前序遍历的顺序为: ABDECF  

       二、中序遍历

        顺序为: 左子树----> 根 ------> 右子树

        先递归进入根结点的左子树结点,再访问根结点,最后递归进入根结点的右子树结点;如果其左子树或右子树为分支结点,则需要对分支结点再进行一遍中序遍历。

        中序遍历代码:

void InOrder(BiTree T) // 中序遍历
{if (T!=NULL){InOrder(T->lchild);		//递归遍历左子树visit(T);				//访问根结点InOrder(T->rchild);		//递归遍历右子树}
}

同样以上述二叉树为例进行图示:

        可以发现:中序遍历的顺序即为二叉树中节点并排时的从左到右

         

三、后序遍历

        过程:左子树---->右子树----->根

        先递归进入根结点的左子树结点,再递归进入根结点的右子树结点,最后访问根结点;如果其左子树或右子树为分支结点,则需要对分支结点再进行一遍后序遍历。 

        代码:

void PostOrder(BiTree T) // 后续遍历
{if (T!=NULL){PostOrder(T->lchild);	//递归遍历左子树PostOrder(T->rchild);	//递归遍历右子树visit(T);				//访问根结点}
}

        图示过程:

        后序遍历不能直接通过二叉树写出,需要根据代码的思路过程拓展。 

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

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

相关文章

~MAY~

一时间不知道要干啥了&#xff0c;随便写点题目吧 亚运奖牌榜 很简单的模拟&#xff0c;题目看错了整了半天。。 #include<bits/stdc.h> using namespace std; int n; struct a {int pai[4]; }c1,c2; int main() {cin>>n;memset(c1.pai,0,sizeof(c1.pai));memse…

有限单元法-编程与软件应用(崔济东、沈雪龙)【PDF下载】

专栏导读 作者简介&#xff1a;工学博士&#xff0c;高级工程师&#xff0c;专注于工业软件算法研究本文已收录于专栏&#xff1a;《有限元编程从入门到精通》本专栏旨在提供 1.以案例的形式讲解各类有限元问题的程序实现&#xff0c;并提供所有案例完整源码&#xff1b;2.单元…

在centos7中运行向量数据库PostgreSQL连接不上如何排查?

1. 检查 PostgreSQL 服务状态 首先&#xff0c;您需要确认 PostgreSQL 服务是否正在运行。您可以使用以下命令来检查服务状态&#xff1a; sudo systemctl status postgresql如果服务没有运行&#xff0c;您需要启动它&#xff1a; sudo systemctl start postgresql2. 确认 …

OSPF链路状态数据库

原理概述 OSPF是一种基于链路状态的动态路由协议&#xff0c;每台OSPF路由器都会生成相关的LSA&#xff0c;并将这些LSA通告出去。路由器收到LSA后&#xff0c;会将它们存放在链路状态数据库LSDB中。 LSA有多种不同的类型&#xff0c;不同类型的LSA的功能和作用是不同的&…

【智能优化算法】金豺狼优化算法(Golden jackal optimization,GJO)

金豺狼优化(Golden jackal optimization,GJO)是期刊“Expert Systems with Applications”&#xff08;中科院一区IF 8.3&#xff09;的2022年智能优化算法 01.引言 金豺狼优化(Golden jackal optimization,GJO)旨在为解决实际工程问题提供一种替代的优化方法。GJO的灵感来自金…

【智能优化算法】卷尾猴搜索算法(Capuchin search algorithm,CapSA)

【智能优化算法】卷尾猴搜索算法(Capuchin search algorithm,CapSA)是期刊“NEURAL COMPUTING & APPLICATIONS”&#xff08;IF 6.0&#xff09;的2021年智能优化算法 01.引言 【智能优化算法】卷尾猴搜索算法(Capuchin search algorithm,CapSA)用于解决约束和全局优化问…

VMware Workstation 17 Player 创建虚拟机教程

本教程是以windows server 2012物理机服务器安装好的VMware Workstation 17 Player为例进行演示&#xff0c;安装VMware Workstation 17 Player大家可以自行网上搜索安装。 1、新建虚拟机 双击安装好的VMvare图标&#xff0c;点击创建虚拟机。 2、选择是否安装系统 本步骤选…

23 内核开发- Linux 内核下半段的实现方式

23 内核开发- Linux 内核下半段的实现方式 1.定义 下半部&#xff0c;就是执行中断处理密切相关但是中断处理程序本身不执行的工作。 2.为什么要用下半部执行&#xff1f; 中断处理程序不在进程上下文中运行&#xff0c;所以他们不能阻塞&#xff1b;为什么要推后执行&#xf…

【静态分析】软件分析课程实验A4-类层次结构分析与过程间常量传播

官网&#xff1a;作业 4&#xff1a;类层次结构分析与过程间常量传播 | Tai-e 参考&#xff1a;https://www.cnblogs.com/gonghr/p/17984124 ----------------------------------------------------------------------- 1 作业导览 为 Java 实现一个类层次结构分析&#xf…

shiro-quickstart启动报错

说明&#xff1a;最近在学登录框架&#xff0c;记录一下学习刚shiro框架&#xff0c;启动快速入门样例的错误&#xff1b; 场景 把shiro代码download下来&#xff0c;打开samples&#xff08;样例&#xff09;包&#xff0c;打开快速入门&#xff0c;启动&#xff0c;报错&am…

Apache代理服务器使用注意事项

文章目录 一、配置二、服务器配置三、代理配置四、常用命令1、重启服务器 运行环境&#xff1a;ubuntu 一、配置 服务器配置文件路径&#xff1a;/etc/apache2/apache2.conf不加密代理配置文件路径&#xff1a;/etc/apache2/sites-enabled/000-default.conf加密代理配置文件路…

WiFi网络的重要性

 WiFi网络的重要性 便利性&#xff1a;WiFi网络提供了无线连接&#xff0c;使得用户可以在没有线缆束缚的情况下访问互联网。这种便利性使得用户可以随时随地使用笔记本电脑、平板电脑、智能手机等设备上网&#xff0c;无论是在家中、办公室、咖啡馆还是公共场所。移动性&am…

聊天室项目思路

发起群聊&#xff1a; 从好友表选取人发送到服务器&#xff0c;服务器随机生成不重复的群号&#xff0c;存储在数据库&#xff0c;同时建立中间表&#xff0c;处理用户与群聊的关系 申请入群&#xff1a; 输入群号&#xff0c;发消息给服务器&#xff0c;服务器查询是否存在…

06-xss攻防于绕过

xss的攻击于防御 攻击的利用方式 1&#xff09;获取cookie&#xff0c;实现越权&#xff0c;如果是获取到网站管理员的cookie&#xff0c;也可以叫提权。注意尽量尽快退出账号&#xff0c;删除session&#xff0c;让session失效 2&#xff09;钓鱼网站&#xff0c;模拟真实的…

Android 按钮Button点击音效

一、新建工程 编译运行&#xff0c;确保工程无误&#xff0c;这里不过多赘述。 二、UI布局 添加两个播放音效Button <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android"…

leetcode-括号生成-101

题目要求 思路 1.左括号的数量等于右括号的数量等于n作为判出条件&#xff0c;将结果存到res中 2.递归有两种&#xff0c;一种是增加左括号&#xff0c;一种是增加右括号&#xff0c;只要左括号的数量不超过n&#xff0c;就走增加左括号的递归&#xff0c;右括号的数量只要小于…

element ui的table多选

使用el-table的selection-change事件来获取选中的值&#xff1b; 例&#xff1a; html代码&#xff1a; <el-button type"primary" click"openTableSet">列表设置</el-button><!-- 列表设置弹框 --> <el-dialog :close-on-click-mo…

【文化课学习笔记】【物理】功与能

【物理】功与能 功 基础概念 定义 一个物体在力的作用下&#xff0c;沿力的方向&#xff0c;通过一段距离(位移)&#xff0c;则称这个力做了功。 公式 功的定义式&#xff1a; \[W Fx \] 这里的 \(x\) 指的是物体沿力的方向上发生的位移。由于力 \(F\) 和位移 \(x\) 都是矢量&…

[笔试训练](十八)

目录 052:字符串压缩 053:chika和蜜柑 054:01背包 052:字符串压缩 压缩字符串(一)_牛客题霸_牛客网 (nowcoder.com) 题目&#xff1a; 题解&#xff1a; 双指针模拟 class Solution { public:string compressString(string param) {int nparam.size();string ret;int num…

Linux-基础命令第三天

1、命令&#xff1a;wc 作用&#xff1a;统计行数、单词数、字符数 格式&#xff1a;wc 选项 文件名 例&#xff1a; 统计文件中的行数、单词数、字符数 说明&#xff1a;59代表行数&#xff0c;111代表单词数&#xff0c;2713代表字符数&#xff0c;a.txt代表文件名 选项…