文件 main.cpp 代码如下: #include<malloc.h>// malloc()等 #include<stdio.h>// 标准输入输出头文件,包括EOF(=^Z或F6),NULL等 #include<stdlib.h>// atoi(),exit() #include<math.h>// 数学函数头文件,包括floor(),ceil(),abs()等#define ClearBiTree DestroyBiTree // 清空二叉树和销毁二叉树的操作一样typedef struct BiTNode { int data// 结点的值BiTNode *lchild,*rchild// 左右孩子指针 }BiTNode,*BiTreeint Nil=0// 设整型以0为空void visit(int e) { printf("%d ",e)// 以整型格式输出 } void InitBiTree(BiTree &T) { // 操作结果:构造空二叉树T T=NULL} void CreateBiTree(BiTree &T) { // 算法6.4:按先序次序输入二叉树中结点的值(可为字符型或整型,在主程中定义), // 构造二叉链表表示的二叉树T。变量Nil表示空(子)树。修改 int number scanf("%d",&number)// 输入结点的值 if(number==Nil) // 结点的值为空 T=NULL else // 结点的值不为空 { T=(BiTree)malloc(sizeof(BiTNode))// 生成根结点 if(!T) exit(OVERFLOW)T->data=number// 将值赋给T所指结点 CreateBiTree(T->lchild)// 递归构造左子树 CreateBiTree(T->rchild)// 递归构造右子树 } } void DestroyBiTree(BiTree &T) { // 初始条件:二叉树T存在。操作结果:销毁二叉树T if(T) // 非空树 { DestroyBiTree(T->lchild)// 递归销毁左子树,如无左子树,则不执行任何操作 DestroyBiTree(T->rchild)// 递归销毁右子树,如无右子树,则不执行任何操作 free(T)// 释放根结点 T=NULL// 空指针赋0 } } void PreOrderTraverse(BiTree T,void(*Visit)(int)) { // 初始条件:二叉树T存在,Visit是对结点操作的应用函数。修改算法6.1 // 操作结果:先序递归遍历T,对每个结点调用函数Visit一次且仅一次 if(T) // T不空 { Visit(T->data)// 先访问根结点 PreOrderTraverse(T->lchild,Visit)// 再先序遍历左子树 PreOrderTraverse(T->rchild,Visit)// 最后先序遍历右子树 } } void InOrderTraverse(BiTree T,void(*Visit)(int)) { // 初始条件:二叉树T存在,Visit是对结点操作的应用函数 // 操作结果:中序递归遍历T,对每个结点调用函数Visit一次且仅一次 if(T) { InOrderTraverse(T->lchild,Visit)// 先中序遍历左子树 Visit(T->data)// 再访问根结点 InOrderTraverse(T->rchild,Visit)// 最后中序遍历右子树 } } void PostOrderTraverse(BiTree T,void(*Visit)(int)) { // 初始条件:二叉树T存在,Visit是对结点操作的应用函数 // 操作结果:后序递归遍历T,对每个结点调用函数Visit一次且仅一次 if(T) // T不空 { PostOrderTraverse(T->lchild,Visit)// 先后序遍历左子树 PostOrderTraverse(T->rchild,Visit)// 再后序遍历右子树 Visit(T->data)// 最后访问根结点 } } void main() { BiTree T InitBiTree(T)// 初始化二叉树T printf("按先序次序输入二叉树中结点的值,输入0表示节点为空,输入范例:1 2 0 0 3 0 0\n") CreateBiTree(T)// 建立二叉树T printf("先序递归遍历二叉树:\n") PreOrderTraverse(T,visit)// 先序递归遍历二叉树T printf("\n中序递归遍历二叉树:\n") InOrderTraverse(T,visit)// 中序递归遍历二叉树T printf("\n后序递归遍历二叉树:\n") PostOrderTraverse(T,visit)// 后序递归遍历二叉树T }这样可以么?#include<iostream>using namespace stdtypedef struct BinaryTree{ char datastruct BinaryTree *lchild,*rchild}BinaryTree,*BiTreevoid CreateBiTree(BiTree &T){ char zif((z=getchar())==' ') T=NULLelse { T=(BinaryTree*)malloc(sizeof(BinaryTree)) T->data=z CreateBiTree(T->lchild) CreateBiTree(T->rchild)}}//先序遍历void preBiTree(BiTree T){ if(T!=NULL) { cout<<T->data preBiTree(T->lchild) preBiTree(T->rchild)}}//中序遍历void InBiTree(BiTree T){ if(T!=NULL) { InBiTree(T->lchild) cout<<T->data InBiTree(T->rchild)}}//后序遍历void PostBiTree(BiTree T){ if(T!=NULL) { PostBiTree(T->lchild) PostBiTree(T->rchild) cout<<T->data}}int Depth(BiTree T){ if(T==NULL) { return 0} else return 1+(Depth(T->lchild)>Depth(T->rchild)? Depth(T->lchild):Depth(T->rchild))}void main(){ BiTree Tcout<<"请输入相应二叉树:"<<endlCreateBiTree(T)cout<<"二叉树的先序遍历为:"<<endlpreBiTree(T)cout<<endlcout<<"二叉树的中序遍历为:"<<endlInBiTree(T)cout<<endlcout<<"二叉树的后序遍历为:"<<endlPostBiTree(T)cout<<endlcout<<"二叉树的深度为:"<<endlcout<<Depth(T)<<endl}
编写一个程序,实现二叉树的先序遍历,中序遍历,后序遍历的各种递归和非递归算法,以及层次遍历的算法
给您推荐相同类型的内容:
java多线程同步全局变量
1.使用JAVA Collections 这个类. 有 checkedListMapSet 方法.将你的集合放进去,会返回给你一个线程安全的集合. 这样不需要你手动去做线程同步, java已经帮你做了.2.使用 syncjs中怎么获取当前年份、月份和日期
JS有自带的日期函数,获取如下:var date = new Date()var year = date.getFullYear()获取年份var month = date.getMonth()+1获取月份,因为是从0-11所以要+电脑截屏的三种方法
电脑截屏的三种方法如下所示:方法1、第一种截图方法是电脑系统自带的。在键盘上找到"PrtSc",按下"PrtSc"。然后在"画图"中,点击鼠标右键,点击"粘贴"js中直接输出一个object对象显示的是[object Object]是什么意思?
第一个object代表用户自定义的对象的属性。第二个object代表用户自定义的对象的方法。知识延展:Java把现实中的任何事物都当做一个对象(Object), Java是面向对象的,就是Object Orentied 简称OO 。此处怎么取消电脑节电模式
取消电脑节电模式的方法如下:1、打开电脑的控制面板界面,点击界面中的“系统和安全”。2、在跳转到的界面中,点击电源选项下方的“更改电池设置”。3、点击“高性能”前的开关,将电源计划切换到高性能。4、在电源计划中,点击“节能”右方的“更改计移动端Canvas出现锯齿和模糊
在使用canvas绘图时,发现在移动端、ipad出现锯齿或模糊的情况,这是因为 设备像素比(Device pixel ratio) 的差异导致的。 解决方法:1、将canvas的 属性: widthheight 乘以 设备像素怎样用R语言调用MATLAB程序
假设行数或列数为n vector = randperm(n)vector是从1到n的整数随机排列的向量 按照vector里各个元素的值重新排列行列向量就可以了 假设待排列矩阵为M,排列后的矩阵为A 按列随机排列 A = zeros(size电脑如何关闭触屏模式?
要关闭电脑上的触摸屏模式,你可以按照下面的步骤操作:打开控制面板。点击“设备和打印机”。在“设备和打印机”窗口中,找到你的触摸屏设备,右键单击它。从右键菜单中选择“属性”。在触摸屏属性窗口中,点击“设备使用情况”标签。在“设备使用如何在电脑上调节相片尺寸?
工具栏图像,调整,图像大小,在里面输入你要的大小,确定,然后把图片导出。没有装photoshop软件,就用Xp系统中的拉伸就可以。具体操作:右键点击你要缩小的照片(出现对话框)点击编辑(出现图画界面)点击图象点击扭曲拉伸(出现对话框)缩小CSS 轮播图的实现(纯CSS,连续滑动无倒滑效果)
简单demo:使用HTML+CSS 实现轮播图(三张图为例,分别为:红、绿、蓝)的效果。 不能发视频,截图来代替吧 1.显示 轮播图1(实际轮播的第2个元素li) 2.显示 轮播图2(实际轮播的第3个元素li) 3.显示 轮求《Ruby程序员修炼之道第2版》全文免费下载百度网盘资源,谢谢~
《Ruby程序员修炼之道第2版》百度网盘pdf最新全集下载:链接:https:pan.baidu.coms1k6hnORSDF2YmcCA6y1OiLA?pwd=tlco 提取码:tlco简介:这是一本深受好评的书。它不仅是一本纯java 中常用五大包有哪些?
常用的五个java.lang.*提供利用 Java 编程语言进行程序设计的基础类。最重要的类是 Object(它是类层次结构的根)和 Class(它的实例表示正在运行的应用程序中的类)。java.util.*包含集合框架、遗留的 colle对于JS 中编码(encode)和解码(decode)的三种方法
JS对文字进行编码涉及3个函数:escape,encodeURI,encodeURIComponent,相应3个解码函数:unescape,decodeURI,decodeURIComponent 下面简单介绍一下它们的区别1css 过渡动画 属性
transition-property 过渡效果的CSS属性名称 transition-delay 设置过渡延迟时间 transition-duration谁演的,罗比·雷耶斯扮演者,神盾局特工第
《神盾局特工第四季》罗比·雷耶斯扮演者:加布里埃尔·鲁纳罗比·雷耶斯(恶灵骑士)演员 加布里埃尔·鲁纳一个有双重形态的神秘人,自称“和恶魔签下了契约”后沦为了半人半魔,夜晚时会化身为幽灵骑士去惩戒罪人。《神盾局特工第四季》是漫威与ABCC语言中%d,和%u有什么区别
%d可以用在scanf中,也可以用在printf中,%u只能用在printf中(早期编译器),后来的一些编译器也可以用在scanf中。用在scanf中时二者没有区别作用与%d相同,用在printf中时二者情况就大不一样了:%d把对应的整数按javascript中怎么获取主机的域名和端口号
方法 步骤如下:打开开发工具。比如editplus、dw等新建一个html文件,写入脚本标签<script language="javascript" type="textjavascript&在网页制作中如何控制DIV居中显示,用CSS怎么控制背景图片大小?
1、首先,打开html编辑器,新建html文件,例如:index.html。2、在index.html中的<style>标签中,输入css代码:body {text-align: centerbackground:如何用DIV+CSS做漂亮的横排导航栏
先码好导航栏所需要的基本的HTML代码这个就不必多说具体的代码如下:<html><head><title>横向导航栏<title>&l请问一下各位,科顺家庭防水Y201全优JS聚合物防水胶可以用于墙面吗?
科顺家庭防水Y201全优JS聚合物防水胶可以用于墙面。聚合物水泥防水涂料总体上与其他防水涂料的应用差别并不太大,主要表现为对基面有更好的适应能力,适合卫生间地面防水。科顺Y201全优JS聚合物防水胶是科顺引用国内外防水材料的先进技术,自主研昆明Java培训:学习Java技术开发有必要学习CSS吗?
学习Java技术开发有必要学习CSS吗?学习Java技术开发会涉及到HTML和JavaScript的课程,其实关于Java技术开发有一个主方向越学越深,当然还有一些枝茂也就是说平行层次的知识点也需要有所了解,下面小编解答一下:学习Java技2020-04-10 百度地图api和qiankunjs的script劫持引起的问题
首先,我们梳理一下百度地图加载的过程。 我们在页面的html底下写了一条百度地图的script,页面在初始化的时候,会加载这条script,这条script会引入BMap这个全局变量,以及一些处理函数(比如我们下面要讲到的_jsloadcpu散热器安装步骤及注意事项 为您电脑保驾护航!
相信大家对主机板散热器都比陌生,主机板散热器顾名思义就是用来为主机板散热的。散热器对主机板的稳定运行起著决定性的作用,组装电脑时选购一款好的散热器非常重要。下面我们就来介绍:cpu散热器安装步骤以及安装注意事项。CPU散热器安怎样用js控制让指定的图层显示在最上层
设置style 中 z-index:autoauto可定义为一个值(整数数字),越大代表越置前,如可定义为: z-index:999。若定义为-1,代表为最底层。div的图层由div的style中的z-index来决定,z-index是层垂怎样用QtCreator编辑运行python脚本
不知道你是在Windows还是在linux系统上在windows上面先 Win+R 然后 进入CMD 命令行-> 输入:cd py文件的目录进入你py文件所在的目录后 输入:python 脚本文件名.py 就可以运行了在li水泥基渗透结晶型防水涂料和JS防水涂料有什么区别
1.水泥基渗透结晶是钢性防水材料,JS防水涂料是柔性防水涂料,J是聚合物的缩写,S是水泥基的缩写,JS防水涂料是聚合物水泥防水涂料的简称。x0dx0a2.水泥基渗透结晶执行标准是GB18445-2001。JS的执行标准是GBT2344jquery 或者js 怎么获取页面光标所在的元素
jquery 或者js 获取页面光标所在的元素有如下两种方式:1.通过焦点获取光标所在元素光标所在一般都在文本框里面(该方法只适用于input,textarea)$("input:focus") 光标所在inp如何在CSS中调用公用css
在所有需要该公用css的html页面的<head><head>中的任意位置加入<link href="CSS文件的相对路径或绝对路径" rel="s电脑上的微信聊天记录怎么删除
微信聊天记录方法如下:1.首先进入两个人之间的聊天界面,然后找到我们要删除的聊天记录;2、然后长按聊天就会出现删除,点击删除就会删除这一条聊天记录;3、如果想要删除和这个好友的所有聊天记录,只需要在聊天列表中长按聊天对话框,然后弹出删除功能如何制作微视频
问题一:如何制作微视频会声会影 这个软件比较简单 学起来比较容易! AE CS4 影视后期制作!这个相对难一下 但一些电影的特效都可以完成! PR CS4 专业剪切 也有很好的特效! 你可以选择 会声会影12 这个软件很好用