当前位置:首页 » 编程软件 » 树叶编程

树叶编程

发布时间: 2023-09-28 00:38:21

A. 数据结构编程: 统计二叉树中叶子结点的个数。

叶子节点:没有孩子节点的节点

也就是说,当我们明白了叶子节点的定义后,只需要遍历一遍二叉树,把符合这种条件(左孩子节点和右孩子节点都为NULL的节点)的节点统计出来就可以了。

于是,实际上这个问题也就转化成了如何遍历二叉树?很显然,遍历二叉树是可以有多种方式的,如:前序遍历(递归/非递归)、中序遍历(递归/非递归)、后序遍历(递归/非递归)、层次遍历等等。

下面我将给出使用递归前序遍历以及层次遍历两种思路实现的求解叶子节点的示例代码吧,仅供参考。其他几种实现方式思路类似,可自行尝试。示例代码如下:

java">packagecn.zifangsky.tree.questions;

importorg.junit.Test;

importcn.zifangsky.queue.LinkQueue;
importcn.zifangsky.tree.BinaryTreeNode;

/**
*求二叉树中叶子节点的个数
*@authorAdministrator
*
*/
publicclassQuestion2{

/**
*通过递归前序遍历获取叶子节点个数
*@paramroot
*@return
*/
(BinaryTreeNoderoot){
if(root==null){
return0;
}else{
if(root.getLeft()==null&&root.getRight()==null){//叶子节点
return1;
}else{
(root.getLeft())+getNumberOfLeavesByPreOrder(root.getRight());
}
}

}


/**
*使用层次遍历获取二叉树叶子节点个数
*
*@时间复杂度O(n)
*@paramroot
*/
(BinaryTreeNoderoot){
intcount=0;//叶子节点总数
LinkQueue<BinaryTreeNode>queue=newLinkQueue<>();
if(root!=null){
queue.enQueue(root);
}

while(!queue.isEmpty()){
BinaryTreeNodetemp=(BinaryTreeNode)queue.deQueue();
//叶子节点:左孩子节点和右孩子节点都为NULL的节点
if(temp.getLeft()==null&&temp.getRight()==null){
count++;
}else{
if(temp.getLeft()!=null){
queue.enQueue(temp.getLeft());
}
if(temp.getRight()!=null){
queue.enQueue(temp.getRight());
}
}
}
returncount;
}


/**
*测试用例
*/
@Test
publicvoidtestMethods(){
/**
*使用队列构造一个供测试使用的二叉树
*1
*23
*4567
*89
*/
LinkQueue<BinaryTreeNode>queue=newLinkQueue<BinaryTreeNode>();
BinaryTreeNoderoot=newBinaryTreeNode(1);//根节点

queue.enQueue(root);
BinaryTreeNodetemp=null;
for(inti=2;i<10;i=i+2){
BinaryTreeNodetmpNode1=newBinaryTreeNode(i);
BinaryTreeNodetmpNode2=newBinaryTreeNode(i+1);

temp=(BinaryTreeNode)queue.deQueue();

temp.setLeft(tmpNode1);
temp.setRight(tmpNode2);

if(i!=4)
queue.enQueue(tmpNode1);
queue.enQueue(tmpNode2);
}

System.out.println("叶子节点个数是:"+getNumberOfLeavesByPreOrder(root));
System.out.println("叶子节点个数是:"+getNumberOfLeavesByQueue(root));

}

}

测试代码输出如下:

叶子节点个数是:5
叶子节点个数是:5


附:

二叉树节点BinaryTreeNode的定义:

packagecn.zifangsky.tree;

publicclassBinaryTreeNode{
privateintdata;//数据
privateBinaryTreeNodeleft;//左孩子节点
privateBinaryTreeNoderight;//右孩子节点

publicBinaryTreeNode(intdata){
this.data=data;
}

publicBinaryTreeNode(intdata,BinaryTreeNodeleft,BinaryTreeNoderight){
this.data=data;
this.left=left;
this.right=right;
}

publicintgetData(){
returndata;
}

publicvoidsetData(intdata){
this.data=data;
}

publicBinaryTreeNodegetLeft(){
returnleft;
}

publicvoidsetLeft(BinaryTreeNodeleft){
this.left=left;
}

publicBinaryTreeNodegetRight(){
returnright;
}

publicvoidsetRight(BinaryTreeNoderight){
this.right=right;
}

}

队列LinkQueue的定义:

packagecn.zifangsky.queue;

importcn.zifangsky.linkedlist.SinglyNode;

/**
*基于单链表实现的队列
*@authorzifangsky
*@param<K>
*/
publicclassLinkQueue<KextendsObject>{
privateSinglyNode<?>frontNode;//队首节点
privateSinglyNode<?>rearNode;//队尾节点

publicLinkQueue(){
frontNode=null;
rearNode=null;
}

/**
*返回队列是否为空
*@时间复杂度O(1)
*@return
*/
publicbooleanisEmpty(){
return(frontNode==null);
}

/**
*返回存储在队列的元素个数
*@时间复杂度O(n)
*@return
*/
publicintsize(){
intlength=0;
SinglyNode<?>currentNode=frontNode;
while(currentNode!=null){
length++;
currentNode=currentNode.getNext();
}

returnlength;
}

/**
*入队:在链表表尾插入数据
*@时间复杂度O(1)
*@paramdata
*/
publicvoidenQueue(Kdata){
SinglyNode<K>newNode=newSinglyNode<K>(data);

if(rearNode!=null){
rearNode.setNext(newNode);
}

rearNode=newNode;

if(frontNode==null){
frontNode=rearNode;
}
}

/**
*出队:删除表头节点
*@时间复杂度O(1)
*@return
*/
publicObjectdeQueue(){
if(isEmpty()){
thrownewRuntimeException("QueueEmpty!");
}else{
Objectresult=frontNode.getData();

if(frontNode==rearNode){
frontNode=null;
rearNode=null;
}else{
frontNode=frontNode.getNext();
}

returnresult;
}
}

}

单链表节点SinglyNode的定义:

packagecn.zifangsky.linkedlist;

/**
*单链表的定义
*@authorzifangsky
*@param<K>
*/
publicclassSinglyNode<KextendsObject>{
privateKdata;//数据
privateSinglyNode<?>next;//该节点的下个节点

publicSinglyNode(Kdata){
this.data=data;
}

publicSinglyNode(Kdata,SinglyNode<?>next){
this.data=data;
this.next=next;
}

publicKgetData(){
returndata;
}

publicvoidsetData(Kdata){
this.data=data;
}

publicSinglyNode<?>getNext(){
returnnext;
}

publicvoidsetNext(SinglyNode<?>next){
this.next=next;
}

@Override
publicStringtoString(){
return"SinglyNode[data="+data+"]";
}

}

B. 算法和数据结构的关系

记得网上曾经有一个帖子,大概的列出了学习ACM来说需要的知识背景。如果不是牛人,或者天生受虐倾向,普通人看到了都会晕倒,多达100多个科目(全部需要数学背景)。楼主觉得你能学的过来吗?
但是,所有的算法,乃至数学在实际运用中都是要根据不同的数据来选择不同的方法,所以一般学习过算法和数据结构的人都会越发的认识到,数据才是程序的中心,只有找到了一个组织数据的最佳方式,算法的运用才会事半功倍。比如我印象最深刻的是在大二时做的一道题目:判断一个输入的数是否符合科学计算法。如e*103,-30.90*103就不是。 这样一道题,如果用普通的数组线性存储,然后逐一判断,效率的算法的复杂度都是不合格的。 有限状态机则清晰明了的解决了这个问题。即把所有可能的状态和状态的转换画成一个矩阵,然后每读取一个输入的字符就在这些状态中跳转,直到最后一个字符为止,判断最终状态是有效还是无效状态。
总而言之:数据结构是问题的核心,是算法的基础。

建议楼主先磨好数据结构这把剑,对算法也不用着急,毕竟很多的数据结构的书中都有一些基础算法的介绍的。

C. 编程是什么意思

编程是编定程序的中文简称,就是让计算机代为解决某个问题,对某个计算体系规定一定的运算方式,使计算体系按照该计算方式运行,并最终得到相应结果的过程。

为了使计算机能够理解人的意图,就必须将需解决的问题的思路、方法和手段通过计算机能够理解的形式告诉计算机,使得计算机能够根据人的指令去工作,完成某种特定的任务。这种人和计算体系之间交流的过程就是编程。设计具备逻辑流动作用的一种“可控体系”。

(3)树叶编程扩展阅读:

计算机对除机器语言以外的源程序不能直接识别、理解和执行,都必须通过某种方式转换为计算机能够直接执行的。这种将高级程序设计语言编写的源程序转换到机器目标程序的方式有两种:

1、解释方式:计算机对高级语言书写的源程序一边解释一边执行,不能形成目标文件和执行文件。

2、编译方式:经过对源程序的词法分析、语法分析、语意分析、代码生成和代码优化等阶段将所处理的源程序转换为用二进制代码表示的目标程序,然后通过连接程序处理将程序中所用的函数调用、系统功能调用等嵌入到目标程序中,构成一个可以连续执行的二进制执行文件。

参考资料来源:网络-编程



D. 我们的校园四年级作文

在平平淡淡的日常中,大家都经常接触到作文吧,作文一定要做到主题集中,围绕同一主题作深入阐述,切忌东拉西扯,主题涣散甚至无主题。那么,怎么去写作文呢?以下是我收集整理的我们的校园四年级作文6篇,仅供参考,欢迎大家阅读。

我们的校园四年级作文 篇1

这里承载着我美丽的梦想,这里埋藏着我心里的秘密,这里记忆着我童年的欢乐,这里是我第二个美丽的家园!我的智慧校园。

校园是我成长的驿站,记录着成长的痛苦,也刻下了欢乐。我爱我的校园,也爱我的班级,因为这里是我的一个家,一个充满智慧,友善,快乐的天堂。请大家闭上眼睛,由我带领大家一起去探索......

走进校园,我们可以看到一排整齐的小树像威武的士兵欢迎我们来到知识的乐园;可以看见傲然挺立和明亮夺目的合欢花和月季花,它们像老师的一张张笑脸和蔼可亲;也可以看见神气十足、拔地而起的小草让校园充满生机;还可以看见看门的伯伯种下的那些绿油油的蔬菜,嫩绿的叶子让人心旷神怡。

走到教学楼前,映入眼帘的便是宽阔的操场了!下课后,我们像是快乐的小鸟,三五成群的来到这里,在金色的阳光下,在徐徐的微风中,跳皮筋、跳绳、踢毽子、捉迷藏……大家尽情地享受课间的快乐。操场中间还有一棵高大的梧桐树,他看起来是那么有精神,他是校园的守护神,常年穿着绿色的服装,默默地为我们服务,他就像我们的朋友一样陪伴我们在阳光下一起快乐成长。

叮铃铃,上课了,同学们像离弦的箭一样奔向教室。此时,有的教室传来郎朗的读书声,有的教室传来优美的音乐和动听的歌声,还有的教室非常安静,只有唰唰的写字声......

我们学校有一个藏有三万多册图书的图书馆,学校全天为我们开放,我们拿着自己的学籍卡就能自由借还里面的图书,尽情畅游知识的海洋!每个班级给我们配备了班班通,老师们总是用丰富有趣的课件给我们上课!那些难懂的知识都被变成了有趣的视频、歌曲、图形等。学起来容易多了!我们还有丰富多彩的社团课,我参加的是计算机社团,我们的计算机教室可大了,有60多台电脑,计算机老师这学期教我们打字、电脑绘画、编程小游戏!现在我也是一个电脑小能手了!有一次还帮妈妈编了一个计时器,妈妈一直夸我是个小天才!我们学校其他社团也很有意思,例如,泥团社团、烙画社团、啦啦操社团等,下学期我体验后再给大家讲吧!

我很荣幸成为本校的一名小学生,享受着学校智慧化的教学、科研、管理、生活和服务。有种讲起来就停不下来的节奏,好了,今天就讲这么多吧!这就是我的智慧校园,一个充满着骄傲与自豪的天堂。它,如雨伞,遮风挡雨;如鲜花,色彩斑斓;如大海,宽广博大。所以,我爱他,我的智慧校园!

我们的校园四年级作文 篇2

我的学校叫伊河路小学,位于中原区伊河路上,我想大概就是因为她在伊河路上的缘故,所以才这样给她命名的。

每天上学时,首先映入眼帘的就是五个鲜红的大字-----伊河路小学。学校的大门是个自动门,每当我们去上学的时候,她就像妈妈一样展开怀抱迎接我们,让我们在知识的海洋里自由徜徉。传达室的保安叔叔们为了我们的安全,不管风吹日晒,总是面带笑容,尽心尽责地为我们站岗,保护我们进出校园的安全。

走进校园,第一眼看到的就是一块巨大的液晶屏幕,屏幕每天都在滚动播放着不同的信息,有日常安全教育、有学习方法介绍、有一些活动的时间安排等。再往里走就看到了升旗台,到了周一,就会有高年级的哥哥姐姐喊着“1、2、1”,迈着整齐的脚步,到升旗台上进行升国旗仪式。每次看到这里,我都非常激动,想象着什么时候自己也能站在升旗台上听着庄严的国歌升国旗。

走进教室,辛勤的老师正在调试“班班通”整理课件,课件内容有音频、视频、还有动画和图片,有了这些智慧因素的存在,使得我们上课内容更加生动、有趣,同学们的学习情绪也更加高涨。除了学习日常的文化知识,我们还增加了许多有意思的课程,比如新增加的电脑课,我们在老师的帮助下,学会了什么是“最大化”和“最小化”,怎么切换中英文,通过“编程猫”学会了简单的编程,自己动手做了许多简单的动画和小游戏。另外我们每周还有一节校本课,一定会有人问“校本课”是学什么的呢?我给大家解释一下,“校本课”是由多门课程所组成,包含了厨艺课、陶艺课、科学探索、国学知识等好多内容组成,同学们可以根据自己的喜好进行网上报名选课,我今年选择了“金话筒”,通过这门课程想让自己体验一下当主持人的感觉。

从去年开始,我们学校开展了校园足球联赛,我们利用中午上课前的时间进行比赛,每班挑选几名男女同学组成本班的足球队,我很高兴成为其中一员。经过大家一个学期的努力,我们班取得了不错的成绩。足球联赛不仅增强了同学们的体质还增强了我们班的凝聚力。

这就是我的智慧校园,我在智慧的校园里学习丰富多彩的知识,努力让自己成为一名德、智、体、美、劳全面发展的少先队员。

我们的校园四年级作文 篇3

我们的校园是一个美丽且丰富多彩的一个大校园。

我们学校坐落于繁华的滨江,走在滨和路上,你便能远远地望见一块巨石横卧于学校门口,上面清楚的写着“杭州江南实验学校”。待你走近时,一座独特的学校大门矗立在你的面前。两个碧色池子分布在大门两侧,中间小河连通,两座木质拱桥横跨在小河之上,远远望去犹如“双虹卧波”,六根粗大的柱子立在大门外侧,像哨兵似的驻守着。

听着潺潺水声,慢慢走过木桥,便进入了我的校园,校园内那真是“五步一景,十步一典故”。

在你的右手边就是我们学校最大美景之一“群贤启梦”,好多名人的雕像矗立在绿地之上,他们有伟大的革命家孙中山先生、现代文学家鲁迅爷爷和冰心奶奶、助人为乐的雷锋叔叔和舍己为人的赖宁,他们神态各异,栩栩如生般或站着或坐着,好似一直在激励我们为了梦想而不断努力前行。

漫步来到学校的操场上,抬头便能看到那一座大钟,大概10层楼那么高,犹如巨大的火箭一般,十分引人注目。那时针、分针每一刻的走动,都在提醒着我们珍惜我们宝贵的时间。

大钟楼的右手边,有一块郁郁葱葱的山坡,一张白色风帆张立着,远远望去犹如一张巨帆在碧波中起航,同学们在这艘大船中,迎着风浪,无畏前行。这里便是我们学校又一大风景地之一—“扬帆起航”。

我们校园中这样的景色还有很多,我们的学习生活也因此而丰富多彩。我爱我的校园。

我们的校园四年级作文 篇4

“涡阳二小”的全称就是涡阳县城关镇第二小学,而我就在那里上学,那里环境秀美。

春天,学校的梧桐树都在努力地发芽,而那高大的松树更是在春天的校园里显得生机勃勃了。同学们下课的时候,都会在松树下面玩游戏,玩累了,会在松树下面乘凉。几只鸟儿躲在松树树叶丛间,叽叽喳喳地叫个不停,好像在和同学玩躲猫猫呢!在松树旁有一丛冬青树丛,一阵春风吹过来,树丛的树叶就“沙沙”地响。

夏天,梧桐树叶们都长大了,像手掌。松树在夏天的校园中,就是一个遮阳的神器,同学们和教师们都会在下面乘凉。

秋天,校园里的树叶都黄了,只有松树的树叶没有黄,依然站在那儿。一阵风吹来,把黄叶吹落下来,黄叶好像在跳舞,一会儿往那边转,一会往那边转,然后再完美降落。又来了一阵风,又把刚降落的黄叶吹了起来,在半空中全体旋转了起来。有的同学把落下的树叶做成标本。

冬天,大雪下个不停,把所有的教学楼的屋顶都给戴上一顶“秃顶帽”,还下起大雾,要是你在操场散步,都会觉得走进了仙境一般。

我爱我的校园——城关二小!

我们的校园四年级作文 篇5

我从小就是个十足的.书迷。但是在我看过的众多如云的书中,最让我手不释卷的却是《小童话大智慧》这本童话书。这本书是我今年在托管书架上找到的。这本书原是这里一个学生的,因托管老师见这本书内容精彩、引人入胜、词句优美,而且内容也是一些教我们如何做人的道理,于是就把这本书选在了书架上,让大家欣赏,我也看了这本书,的确不假。我刚看到这本书的时候,就被它的封面深深的吸引住了,那浅绿色的封面,那富有艺术魅力的字体,那栩栩如生的画面……

掀开第一页,就可以看到作者写的前言,品读一下前言,就觉得这本书与众不同、非同凡响。再掀开第二页,你就可以把这本书里的故事看个透,那一个个故事名取的真是别具一格,让你看了就想一饱眼福。

这里的每一个故事都被作者用生动的语句写的与众不同、引人入胜。那一个个优美的词句,让我感觉受益匪浅,好想这些事就出现在自己身边一样……

就因为这本书,让我知道了许许多多做人的道理,让我知道了人生的可贵……

它可是我看过的最精彩的一本书,让我们一起来分享吧!

我们的校园四年级作文 篇6

我在新惠第二小学上学,我的学校在新中街南端。我有一个美丽的校园。

进了学校的大门,往右走,映入眼帘的是教学楼。教学楼是蓝白相间的,有五层呢!教学楼有三个门,两个小门,中间一个大门。有十二根大圆柱,要三个人拉手才能围起一个。教学楼的正中挂着校徽,校徽两边分别写着四个大字:“团结友爱”、“活泼向上”

从教学楼中门走出来,正中央是升旗台,升旗台上耸立着旗杆,旗杆上随风飘扬着五星红旗。五星红旗两边是三角形的草坪,那里花开得繁茂,五彩缤纷;草长得茂盛,翠绿迷人;周边还栽着大松树,饱经风霜日晒,长得苍翠欲滴,像一个个粗壮的巨人,守卫着我们美丽的校园。

从升旗台一直往前走,就是操场。操场很宽大,操场前面迎面的是艺术墙,那儿画着各式小朋友的运动图案,有打乒乓球的,有打羽毛球的,有打网球的,有跳绳的,有跳皮筋的……

艺术墙左边是乒乓球台,乒乓球台左边是一些运动器材,再往左走,一幅美丽的风景画展现在眼前,这不是真的风景,可是有哪一个地方的风景能比得上这幅画里的美景呢?

我的校园美,我爱我的校园!

热点内容
美国末日树林密码箱密码在哪里找 发布:2024-11-18 17:35:43 浏览:392
狗4运动相机怎么连接安卓手机 发布:2024-11-18 17:24:17 浏览:707
服务器为什么变红了 发布:2024-11-18 17:14:36 浏览:947
微星存储加速 发布:2024-11-18 16:58:10 浏览:852
钉钉辅助脚本 发布:2024-11-18 16:56:11 浏览:950
java的加减乘除 发布:2024-11-18 16:50:35 浏览:583
nginx怎么访问php 发布:2024-11-18 16:22:55 浏览:304
蚂蚁外快赚钱脚本 发布:2024-11-18 16:21:52 浏览:179
cnc编程培训学习 发布:2024-11-18 16:16:33 浏览:406
android查看工具 发布:2024-11-18 16:03:46 浏览:894