- 浏览: 899521 次
- 性别:
- 来自: 武汉
文章分类
最新评论
-
小宇宙_WZY:
膜拜一下大神,解决了我一个大问题,非常感谢 orz
【解惑】深入jar包:从jar包中读取资源文件 -
JKL852qaz:
感谢,遇到相同的问题!
【解惑】深入jar包:从jar包中读取资源文件 -
lgh1992314:
为什么java中调用final方法是用invokevirtua ...
【解惑】Java动态绑定机制的内幕 -
鲁曼1991:
说的都有道理,protected只能被同一级包的类所调用
【解惑】真正理解了protected的作用范围 -
鲁曼1991:
...
【总结】String in Java
#include<stdio.h> #include<malloc.h> typedef struct binode{ char data; struct binode *lchild; struct binode *rchild; }BiNode,*BiTree; /**************************** *输入创建二叉树: abd##ef###c## *其实输入按照先序顺序,#表示叶子节点 *****************************/ void create(BiTree t){ char ch=(char)getchar(); if(ch=='#'){ t->data='#'; t->lchild=NULL; t->rchild=NULL; } else{ t->data=ch; t->lchild=(BiTree)malloc(sizeof(BiNode)); create(t->lchild); t->rchild=(BiTree)malloc(sizeof(BiNode)); create(t->rchild); } } //先序遍历 void preTraverse(BiTree t){ BiTree p=t; BiTree stack[20]; //使用栈来替代递归方法 int top=0; while(top>=0){ while(p->data!='#'){ printf("%c ",p->data); stack[top++]=p; p=p->lchild; } if(top>0) p=stack[--top]->rchild; else top=-1; } } //中序遍历,和先序差不多 void midTraverse(BiTree t){ BiTree p=t; BiTree stack[20]; int top=0; while(top>=0){ while(p->data!='#'){ stack[top++]=p; p=p->lchild; } if(top>0){ p=stack[--top]; printf("%c ",p->data); p=p->rchild; }else top=-1; } } //后序遍历,稍微复杂一点 void afeTraverse(BiTree t){ BiTree p=t,q=t; BiTree stack[20]; int top=0; while(top>=0){ while(p->data!='#'){ stack[top++]=p; p=p->lchild; } if(q->rchild==p){ printf("%c ",q->data); q->data='#'; //遍历完的节点直接做叶子标记 --top; } if(top>0){ p=stack[top-1]; q=p; p=p->rchild; } } } //测试 int main(){ BiTree root=(BiTree)malloc(sizeof(BiNode)); create(root); afeTraverse(root); printf("\n"); return 1; }
评论
26 楼
piao_bo_yi
2010-07-16
其实这种题本质上->矩阵思想+等差数列。
首先,数多少行->6行。OK。
观察,发现每行前面是空格,数量{1:5, 2:4, 3:3...},等差数列,得出->An=6-N;
然后,发现前三行和后三行规律不一样,分开处理。上部分星也是等差数列{1:1, 2:3, 3:5},
得出->An=2*N-1,于是:
后面思路一样,最后代码:
这样构思比较快而且这类题目都可以这么搞,最多10分钟就搞定了。感觉这种东西的难点就是总会有一种错觉让你觉得你可以直接在某个位置直接打印星号,而忽略前面的空格,诡异...然后这种思路导致你冲动回了这个十年前的东东...
首先,数多少行->6行。OK。
@author pby for(int i=1; i<=6; i++)/*外层框架出来了*/ { //... System.out.println(); }
观察,发现每行前面是空格,数量{1:5, 2:4, 3:3...},等差数列,得出->An=6-N;
for(int i=1; i<=6; i++)/*外层框架出来了*/ { for(int j=1; j<=6-i; j++)/*前面空格解决了*/ { System.out.print(" "); } //... System.out.println(); }
然后,发现前三行和后三行规律不一样,分开处理。上部分星也是等差数列{1:1, 2:3, 3:5},
得出->An=2*N-1,于是:
for(int i=1; i<=6; i++)/*外层框架出来了*/ { for(int j=1; j<=6-i; j++)/*前面空格解决了*/ { System.out.print(" "); } if (i <= 3) { for(int j=1; j<=2*i-1; j++) { System.out.print("*"); } } else { //... } System.out.println(); }
后面思路一样,最后代码:
public static void printStar() { for(int i=1; i<=6; i++) { for(int j=1; j<=6-i; j++) { System.out.print(" "); } if (i <= 3) { for(int j=1; j<=2*i-1; j++) { System.out.print("*"); } } else { int index = i-3;/*索引转换比较重要,这样会简化思路*/ for(int j=1; j<=2*index-1; j++) { System.out.print("*"); } for(int j=1; j<=-2*index+7; j++) { System.out.print(" "); } for(int j=1; j<=2*index-1; j++) { System.out.print("*"); } } System.out.println(); }
这样构思比较快而且这类题目都可以这么搞,最多10分钟就搞定了。感觉这种东西的难点就是总会有一种错觉让你觉得你可以直接在某个位置直接打印星号,而忽略前面的空格,诡异...然后这种思路导致你冲动回了这个十年前的东东...
25 楼
zealot2007
2010-07-16
还是用python写容易,几行就搞定了
import sys def printTriangle(m, num=1, offset=0): #num是一行打印的三角个数 for i in range(m): print ' ' * offset + ' ' * (m - 1 - i) + (' ' * (2 * (m - 1 - i) )).join( [ '*' * (2 * i + 1) + ' ' for j in range(num)] ) def printStar(m, num): #num是层数 for i in range(num): offset = (num - i - 1) * m printTriangle(m, i + 1, offset) if __name__ == "__main__": if not len(sys.argv) == 3: print "Usage: python printStar.py 3 2" else: printStar(int(sys.argv[1]), int(sys.argv[2]))
24 楼
peacenik
2010-04-26
思路:分上下两部分 找到三角形中间列 判断条件输出
代码:
代码:
public static void print(Integer k) { // 最大列数 int m = 3 + 4 * (k - 1); // 最中间一列 int md = Math.round(m / 2); // 两边中间 int h = md / 2; for (int i = 0; i < 2 * k; i++) { System.out.print((i + 1) + "\t|"); for (int j = 0; j < m; j++) { if (i < k) { System.out.print((j > md - (i + 1) && j < md + (i + 1)) ? "*": " "); } else { int y = j > md ? j - md - 1 : j; System.out.print((y > h - (i - k + 1) && y < h+ (i - k + 1)) ? "*" : " "); } } System.out.println(); } }
23 楼
feiyangdesky
2009-11-04
真服了,还有这样的兴趣,直接递归就可以
22 楼
numen_wlm
2009-11-04
當年(貌似1998年?)玩Basic的時候,玩過N多這種類型的程序,什么圖形都玩。現在看到這種類型的程序都會吐...
21 楼
dieslrae
2009-11-03
macadam 写道
treblesoftware 写道
Heart.X.Raid 写道
长见识了,上面两楼的兄弟果然厉害,在下佩服。不过不知道如果我想让100行的小三角形堆叠起来,对了最好堆叠100层。希望上面的兄弟能给我System.out.println();出来,而且还要求"结果正确","维护简单",更要求“灵活多变”。
真长见识了....
2楼的兄弟,递归是个好办法,同意你的观点,但是希望不要嘴上说说,写个程序帖出来,让大家学习学习。现在很多程序员解答别人的问题的时候都喜欢说上一句,然后闪了,希望大家能认识到程序员的工作是什么:写程序,不是说算法。
真长见识了....
2楼的兄弟,递归是个好办法,同意你的观点,但是希望不要嘴上说说,写个程序帖出来,让大家学习学习。现在很多程序员解答别人的问题的时候都喜欢说上一句,然后闪了,希望大家能认识到程序员的工作是什么:写程序,不是说算法。
我高中考试高考QBASIC设计就是这样写的,满分。
PS:其实我从高一就已经这样写了。不过那个时候是:
print(*); print(**); print(***); print(****);
不过面试的时候却是零分
不过面试是不会问这种没有实际意义的问题的
20 楼
Heart.X.Raid
2009-11-03
牛叉 学习了
19 楼
fireflyc
2009-11-03
坊间流传此代码效率非常高。来一个贴图
apache基准测试
ab -c1000 -n1000 http://localhost:3000
apache基准测试
ab -c1000 -n1000 http://localhost:3000
18 楼
fireflyc
2009-11-03
好吧,居然这么多回复,我也来贴一个。
可爱图形之五角星web服务器版本——闪亮登场。
这个是文件
本来打算做成telnet的,后来考虑到web那么普及而且不用客户端,所以就来了这个。
启动程序,访问http:locahost:3000即可看到效果。
鼓掌。。。。。
可爱图形之五角星web服务器版本——闪亮登场。
import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.PrintWriter; import java.io.StringWriter; import java.io.UnsupportedEncodingException; import java.net.InetSocketAddress; import java.net.URLDecoder; import java.net.URLEncoder; import org.apache.asyncweb.common.DefaultHttpResponse; import org.apache.asyncweb.common.HttpCodecFactory; import org.apache.asyncweb.common.HttpHeaderConstants; import org.apache.asyncweb.common.HttpRequest; import org.apache.asyncweb.common.MutableHttpRequest; import org.apache.asyncweb.common.MutableHttpResponse; import org.apache.mina.common.IdleStatus; import org.apache.mina.common.IoBuffer; import org.apache.mina.common.IoFutureListener; import org.apache.mina.common.IoHandler; import org.apache.mina.common.IoSession; import org.apache.mina.common.WriteFuture; import org.apache.mina.filter.codec.ProtocolCodecFilter; import org.apache.mina.transport.socket.SocketAcceptor; import org.apache.mina.transport.socket.nio.NioSocketAcceptor; public class Server { public void start() throws IOException { SocketAcceptor acceptor = new NioSocketAcceptor(); acceptor.getFilterChain().addLast("codec", new ProtocolCodecFilter(new HttpCodecFactory())); acceptor.setReuseAddress(true); acceptor.getSessionConfig().setReuseAddress(true); acceptor.getSessionConfig().setReceiveBufferSize(1024 * 100); acceptor.getSessionConfig().setSendBufferSize(1024 * 100); acceptor.getSessionConfig().setTcpNoDelay(true); acceptor.getSessionConfig().setSoLinger(-1); acceptor.setBacklog(50000); acceptor.setHandler(new IoHandler() { @Override public void exceptionCaught(IoSession session, Throwable throwable) throws Exception { } @Override public void messageReceived(IoSession session, Object message) throws Exception { MutableHttpRequest request = (MutableHttpRequest) message; MutableHttpResponse response = new DefaultHttpResponse(); response.setContent(IoBuffer.wrap(readPicuter().getBytes())); writeResponse(session, request, response); } @Override public void messageSent(IoSession arg0, Object message) throws Exception { } @Override public void sessionClosed(IoSession session) throws Exception { } @Override public void sessionCreated(IoSession session) throws Exception { } @Override public void sessionIdle(IoSession session, IdleStatus status) throws Exception { } @Override public void sessionOpened(IoSession session) throws Exception { } public void writeResponse(IoSession session, HttpRequest req, MutableHttpResponse res) { res.normalize(req); WriteFuture future = session.write(res); if ((session.getAttribute("file") == null) && !HttpHeaderConstants.VALUE_KEEP_ALIVE .equalsIgnoreCase(res .getHeader(HttpHeaderConstants.KEY_CONNECTION))) future.addListener(IoFutureListener.CLOSE); } }); acceptor.bind(new InetSocketAddress(3000)); } private String readPicuter() throws IOException { InputStream is = Server.class.getResourceAsStream("/picuter.txt"); StringWriter result = new StringWriter(); PrintWriter out = new PrintWriter(result); BufferedReader reader = new BufferedReader(new InputStreamReader(is, "utf-8")); String line = null; while ((line = reader.readLine()) != null) { out.println(line); } is.close(); return result.toString(); } public static void main(String args[]) throws IOException { new Server().start(); } }
这个是文件
* *** ***** * * *** *** ***** *****
本来打算做成telnet的,后来考虑到web那么普及而且不用客户端,所以就来了这个。
启动程序,访问http:locahost:3000即可看到效果。
鼓掌。。。。。
17 楼
Heart.X.Raid
2009-11-03
seele 写道
有必要这样吗?
把你打的三角行当作一个点。。就可以了。。。有中心。。
LS的你的。。。效率很差
把你打的三角行当作一个点。。就可以了。。。有中心。。
LS的你的。。。效率很差
你好,我是LZ,我算法的效率是不高,用了近四层循环。不过我说的我还是不太明白,能否写一个程序出来让我看看。谢谢
16 楼
seele
2009-11-02
有必要这样吗?
把你打的三角行当作一个点。。就可以了。。。有中心。。
LS的你的。。。效率很差
把你打的三角行当作一个点。。就可以了。。。有中心。。
LS的你的。。。效率很差
15 楼
zhang_jie439
2009-11-02
分步骤解决:
第一步 :
效果:
*
* *
* * *
* * * *
* * * * *
第二步:
效果:
*****
***** *****
***** ***** *****
***** ***** ***** *****
***** ***** ***** ***** *****
第三步:
效果:
*****
***** *****
***** ***** *****
***** ***** ***** *****
***** ***** ***** ***** *****
第四步
效果:
*****
*****
*****
***** *****
***** *****
***** *****
***** ***** *****
***** ***** *****
***** ***** *****
***** ***** ***** *****
***** ***** ***** *****
***** ***** ***** *****
***** ***** ***** ***** *****
***** ***** ***** ***** *****
***** ***** ***** ***** *****
第五步:
效果:
*
***
*****
* *
*** ***
***** *****
* * *
*** *** ***
***** ***** *****
* * * *
*** *** *** ***
***** ***** ***** *****
* * * * *
*** *** *** *** ***
***** ***** ***** ***** *****
show(5,5);的效果图
第一步 :
public class StartTree { public static void main(String[] args) { show(5); } public static void show(int n){ for(int j=1;j<=n;j++){ for(int i=1;i<=j;i++){ System.out.print("*"); System.out.print(" "); } System.out.println(); } } }
效果:
*
* *
* * *
* * * *
* * * * *
第二步:
public class StartTree { public static void main(String[] args) { show(5,3); } public static void show(int n,int m){ for(int j=1;j<=n;j++){ for(int i=1;i<=j;i++){ for(int k=1;k<=2*m-1;k++)System.out.print("*"); System.out.print(" "); } System.out.println(); } } }
效果:
*****
***** *****
***** ***** *****
***** ***** ***** *****
***** ***** ***** ***** *****
第三步:
public class StartTree { public static void main(String[] args) { show(5,3); } public static void show(int n,int m){ for(int j=1;j<=n;j++){ for(int i=1;i<=m*(n-j);i++){ System.out.print(" "); } for(int i=1;i<=j;i++){ for(int k=1;k<=2*m-1;k++){ System.out.print("*"); } System.out.print(" "); } System.out.println(); } } }
效果:
*****
***** *****
***** ***** *****
***** ***** ***** *****
***** ***** ***** ***** *****
第四步
public class StartTree { public static void main(String[] args) { show(5,3); } public static void show(int n,int m){ for(int j=1;j<=n;j++){ for(int h=1;h<=m;h++){ for(int i=1;i<=m*(n-j);i++){ System.out.print(" "); } for(int i=1;i<=j;i++){ for(int k=1;k<=2*m-1;k++){ System.out.print("*"); } System.out.print(" "); } System.out.println(); } } } }
效果:
*****
*****
*****
***** *****
***** *****
***** *****
***** ***** *****
***** ***** *****
***** ***** *****
***** ***** ***** *****
***** ***** ***** *****
***** ***** ***** *****
***** ***** ***** ***** *****
***** ***** ***** ***** *****
***** ***** ***** ***** *****
第五步:
public class StartTree { public static void main(String[] args) { show(5,3); } public static void show(int n,int m){ for(int j=1;j<=n;j++){ for(int h=1;h<=m;h++){ for(int i=1;i<=m*(n-j);i++) System.out.print(" "); for(int i=1;i<=j;i++){ for(int k=1;k<=m-h;k++)System.out.print(" "); for(int k=1;k<=2*h-1;k++)System.out.print("*"); for(int k=1;k<=m-h;k++)System.out.print(" "); System.out.print(" "); } System.out.println(); } } } }
效果:
*
***
*****
* *
*** ***
***** *****
* * *
*** *** ***
***** ***** *****
* * * *
*** *** *** ***
***** ***** ***** *****
* * * * *
*** *** *** *** ***
***** ***** ***** ***** *****
show(5,5);的效果图
14 楼
iaimstar
2009-11-02
treblesoftware 写道
我高中考试高考QBASIC设计就是这样写的,满分。
PS:其实我从高一就已经这样写了。不过那个时候是:
print(*); print(**); print(***); print(****);
握手 ,我初中学qb也是这个程序,后来奥赛突然变成寻路了,茶几了
13 楼
akfucc
2009-11-02
public class Star { public static void main(String[] args) { // 打印四星, 共四层 int total = 4, starNum = 4; StringBuffer buf = new StringBuffer(); for (int i = 1; i <= total; i++) { buf.append(layer(total, i, starNum)); } System.out.println(buf); } /** * @param totalLayer * 总共几层 * @param layer * 第几层 * @param starNum * 一层有几星 * @return */ public static String layer(int totalLayer, int layer, int starNum) { StringBuffer buf = new StringBuffer(); for (int i = 0; i < starNum; i++) {// 共starNum行 // 每一行由layer*2个部分组成 buf.append(blanks((totalLayer - layer) * starNum)); for (int j = 0; j < layer * 2; j++) { if (j == 0) { buf.append(blanks(starNum - i - 1)); } else if (j % 2 == 0) { buf.append(blanks(starNum * 2 - i * 2 - 1)); } else { buf.append(stars(i * 2 + 1)); } } buf.append('\n'); } return buf.toString(); } static String BLANKS = " "; static String STARS = "********************"; public static String blanks(int num) { return BLANKS.substring(0, num); } public static String stars(int num) { return STARS.substring(0, num); } }
12 楼
d-jasonlee
2009-11-02
public class Test2 { public static void main(String[] args) throws Exception { int n = 4; // 上层 for (int i = 1; i <= n; i++) { // 打印' ' for (int j = 1; j <= (n*2)-i; j++) { System.out.print(" "); } // 打印'*' for (int j = 1; j <= i * 2 - 1; j++) { System.out.print("*"); } // 换行 System.out.println(""); } // 下层 for(int i = 1; i <= n; i++){ // 左侧 // 打印' ' for(int j = 1; j<= n-i; j++){ System.out.print(" "); } // 打印'*' for (int j = 1; j <= i * 2 - 1; j++) { System.out.print("*"); } // 右侧 // 打印' ' for(int j = 1; j<= (n-i)*2+1; j++){ System.out.print(" "); } // 打印'*' for (int j = 1; j <= i * 2 - 1; j++) { System.out.print("*"); } // 换行 System.out.println(""); } } }
11 楼
Heart.X.Raid
2009-11-02
我也觉得挺乐的,不过如果不理你的话就太每礼貌了,毕竟你们还是很捧我的场。
高一就写程序了,后生可畏呀。我写程序的时候都大一了,嗨....
时代出人才呀..
高一就写程序了,后生可畏呀。我写程序的时候都大一了,嗨....
时代出人才呀..
10 楼
prowl
2009-11-02
楼主没点幽默细胞 - -!
9 楼
macadam
2009-11-02
treblesoftware 写道
Heart.X.Raid 写道
长见识了,上面两楼的兄弟果然厉害,在下佩服。不过不知道如果我想让100行的小三角形堆叠起来,对了最好堆叠100层。希望上面的兄弟能给我System.out.println();出来,而且还要求"结果正确","维护简单",更要求“灵活多变”。
真长见识了....
2楼的兄弟,递归是个好办法,同意你的观点,但是希望不要嘴上说说,写个程序帖出来,让大家学习学习。现在很多程序员解答别人的问题的时候都喜欢说上一句,然后闪了,希望大家能认识到程序员的工作是什么:写程序,不是说算法。
真长见识了....
2楼的兄弟,递归是个好办法,同意你的观点,但是希望不要嘴上说说,写个程序帖出来,让大家学习学习。现在很多程序员解答别人的问题的时候都喜欢说上一句,然后闪了,希望大家能认识到程序员的工作是什么:写程序,不是说算法。
我高中考试高考QBASIC设计就是这样写的,满分。
PS:其实我从高一就已经这样写了。不过那个时候是:
print(*); print(**); print(***); print(****);
不过面试的时候却是零分
8 楼
treblesoftware
2009-11-02
Heart.X.Raid 写道
长见识了,上面两楼的兄弟果然厉害,在下佩服。不过不知道如果我想让100行的小三角形堆叠起来,对了最好堆叠100层。希望上面的兄弟能给我System.out.println();出来,而且还要求"结果正确","维护简单",更要求“灵活多变”。
真长见识了....
2楼的兄弟,递归是个好办法,同意你的观点,但是希望不要嘴上说说,写个程序帖出来,让大家学习学习。现在很多程序员解答别人的问题的时候都喜欢说上一句,然后闪了,希望大家能认识到程序员的工作是什么:写程序,不是说算法。
真长见识了....
2楼的兄弟,递归是个好办法,同意你的观点,但是希望不要嘴上说说,写个程序帖出来,让大家学习学习。现在很多程序员解答别人的问题的时候都喜欢说上一句,然后闪了,希望大家能认识到程序员的工作是什么:写程序,不是说算法。
我高中考试高考QBASIC设计就是这样写的,满分。
PS:其实我从高一就已经这样写了。不过那个时候是:
print(*); print(**); print(***); print(****);
7 楼
liliuw
2009-11-02
我又重写代码,这次可以控制层数
public class StarGraphs {
public void mergeGraph(int size,int c){
int line=size; //小三角形的行数
int chen=c;//小三角形的层数
for(int t=0;t<chen;t++){//控制小三角形的层数
for(int i=0;i<line;i++){//控制小三角形的行数
for(int g=0;g<size*(chen-t-1);g++){
System.out.print(" ");
}
for(int k=0;k<t+1;k++){//打印小三角形
for(int j=0;j<size*2-1;j++){
if(j>=(size*2-1)/2-i&&j<=(size*2-1)/2+i){
System.out.print("*");
}else{
System.out.print(" ");
}
}
System.out.print(" ");
}
System.out.println();
}
}
}
public static void main(String[] args) {
StarGraphs g=new StarGraphs();
g.mergeGraph(4,3);//4为传入小三角形的行数 ,2为小三角形排列的层数
}
}
public class StarGraphs {
public void mergeGraph(int size,int c){
int line=size; //小三角形的行数
int chen=c;//小三角形的层数
for(int t=0;t<chen;t++){//控制小三角形的层数
for(int i=0;i<line;i++){//控制小三角形的行数
for(int g=0;g<size*(chen-t-1);g++){
System.out.print(" ");
}
for(int k=0;k<t+1;k++){//打印小三角形
for(int j=0;j<size*2-1;j++){
if(j>=(size*2-1)/2-i&&j<=(size*2-1)/2+i){
System.out.print("*");
}else{
System.out.print(" ");
}
}
System.out.print(" ");
}
System.out.println();
}
}
}
public static void main(String[] args) {
StarGraphs g=new StarGraphs();
g.mergeGraph(4,3);//4为传入小三角形的行数 ,2为小三角形排列的层数
}
}
发表评论
-
Java面试过程中会遇到的问题
2010-08-28 09:37 78971、abstract的method是否可同时是static,是 ... -
<算法书>子数组换位问题
2010-05-21 13:48 4223子数组换位问题 设a[0:n-1 ... -
<游戏> 取石子
2010-05-18 14:05 2711Tang和Jiang非常喜欢玩一 ... -
找一个数组中的主元素
2010-05-12 09:24 6234问题:在一个规模为N的数组array[N]中,所谓主元素就是出 ... -
【Google】25匹马的角逐
2010-05-10 08:25 15045问题是这样的:一共有2 ... -
【腾讯】快速找到未知长度单链表的中间节点
2010-05-09 15:21 5280普通的方法很简单,首先遍历一遍单链表以确定单链表的长度L。然后 ... -
【腾讯】1亿个数据取前1万大的整数
2010-04-29 08:05 5659数据规模分析 不考虑操作系统的区别,通常 ... -
【腾讯】10G整数文件中寻找中位数
2010-04-21 21:15 11842题目:在一个文件中有 10G 个整数,乱序排列,要求找出中位数 ... -
【腾讯】报纸与信件的字符匹配效率问题
2010-03-30 10:11 2236题目:有一个江洋大盗,他每次写信都是从一张报纸上剪下单词,再把 ... -
<算法书>最长前缀是逆串的子串
2010-03-24 19:38 2204问题描述 :设T是长为n的文本串。描述一个找出T的最长 ... -
【腾讯】连续数打乱判断出少了哪些数?
2010-03-17 15:44 47321. 问题:100个连续 的数打乱 之后,随机取出 ... -
【迅雷】多线程同步循环打印
2010-03-03 20:51 4901/****************************** ... -
排列组合算法
2009-10-25 21:50 157数学中的组合运算在统计中是十分常见的运算,但用程序 ... -
将IP地址转化成长整形
2009-10-24 10:14 154下面是一个很简洁的IP字符串转化为长整形数值的算 ...
相关推荐
非递归遍历二叉树是一种不依赖递归函数来访问树的所有节点的方法,它通常通过栈或队列等数据结构来实现。下面我们将详细探讨非递归遍历二叉树的先序、中序和后序策略。 先序遍历是二叉树遍历的一种方法,其顺序为:...
### 非递归遍历二叉树:C语言实现详解 #### 一、引言 在计算机科学中,二叉树是一种常见的数据结构,它由一个根节点以及最多两个子树构成,这两个子树各自又可以是二叉树。二叉树的遍历是其操作中最基本且频繁的...
二叉树的非递归遍历,使用C++实现二叉树的非递归遍历,对正在学习算法的同学应该挺有帮助的
非递归遍历二叉树是一种不依赖递归函数来访问树中所有节点的方法,这在处理大型或深度较大的树时特别有用,因为它避免了调用栈溢出的风险。 二叉树的主要遍历方法有三种:前序遍历、中序遍历和后序遍历。在递归方式...
先序非递归遍历二叉树: a b c 中序递归遍历二叉树: b a c 中序非递归遍历二叉树: b a c 后序递归遍历二叉树: b c a 后序非递归遍历二叉树: b c a 二叉树的深度是2 二叉树的结点个数是3 Press any key to ...
用先序的方式创建二叉树,“#”代表空,然后自动输出递归与非递归的先中后三种顺序遍历二叉树
递归遍历二叉树、c语言以及数据结构均要用到,我还会上传非递归的··
二叉树的递归遍历、非递归遍历和层次遍历
中根顺序递归建立二叉树,递归及非递归遍历二叉树。C++面向过程实现
java语言实现的二叉树的各种操作(包括递归与非递归遍历二叉树,求二叉树的高度,节点总数,叶子节点等)
更简单的非递归遍历二叉树的方法 思路非常简洁,多看多思考
非递归遍历二叉树的算法可以分为先序遍历和后序遍历两种。 非递归先序遍历算法 非递归先序遍历算法使用栈来存储节点,并使用while循环来遍历二叉树。算法的步骤如下: 1. 初始化栈为空,并将根节点设置为当前节点...
本实验报告将深入探讨二叉树的递归和非递归遍历方法,并附带源代码实现,旨在帮助读者理解这两种遍历策略及其应用场景。 一、二叉树遍历 二叉树遍历主要有三种方法:前序遍历、中序遍历和后序遍历。它们是遍历...
非递归遍历则需要更复杂的逻辑,但可以避免栈溢出问题,并在某些情况下提供更好的性能。 在`Tree.cpp`文件中,可能包含了上述各种遍历方法的C++实现。通过阅读和理解这些代码,你可以学习如何在实际编程中处理完全...
在IT领域,尤其是在数据结构与算法的学习中,中序遍历二叉树的非递归算法是一个关键且实用的知识点。通常,我们首先通过递归来实现二叉树的遍历,但递归方法可能因深度过大导致栈溢出,因此掌握非递归版本的遍历算法...
二种非递归实现 二叉树中序遍历: 递归实现 非递归实现 二叉树后序遍历: 递归实现 非递归实现 二叉树层次遍历 二叉树层次创建,创建方法遵循卡特兰数 http://write.blog.csdn.net/postedit/17380455
除了这三种基本的递归遍历方法外,还有对应的非递归遍历方法。本文将详细介绍这六种遍历二叉树的方法,并给出相应的代码实现。 #### 1. 先序遍历(递归) **定义**: - 访问根节点; - 递归地先序遍历左子树; - ...
标题"关于二叉树前序和后序的非递归遍历算法"指的是不使用递归函数来实现二叉树的前序和后序遍历。递归方法虽然直观,但在处理大型二叉树时可能会导致栈溢出,因此非递归方法是一个更优的选择。 **前序遍历**是...