学习程序优化经验

turing-complete 2011-05-26 11:38:16
声明:本来是应当贴到算法区的,考虑到搞C++的搞这些肯定跟玩儿似的,就来这里蹭蹭光。

void preOrder_1(Node root){
if(root == null) return;
Stack<Node> stack = new Stack<Node>();
for(Node iter=root; !stack.empty(); iter=stack.pop()){
if(iter != null){
iter.visit();
stack.push(iter.right);
stack.push(iter.left);
}
}
}


void preOrder_2(Node root){
if(root == null) return;
Stack<Node> stack = new Stack<Node>();
for(Node iter=root; !stack.empty(); ){
if(iter == null){
iter=stack.pop();
}else{
iter.visit();
stack.push(iter.right);
iter=iter.left;
}
}
}
}


void preOrder_3(Node root){
if(root == null) return;
Stack<Node> stack = new Stack<Node>();
for(Node iter=root; !stack.empty(); ){
if(iter == null){
iter=stack.pop();
}else{
iter.visit();
if(iter.right != null){
stack.push(iter.right);
}
iter=iter.left;
}
}
}


void preOrder_4(Node root){
if(root == null) return;
Stack<Node> stack = new Stack<Node>();
for(Node iter=root; !stack.empty(); ){
if(iter == null){
iter=stack.pop();
}
iter.visit();
if(iter.right != null){
stack.push(iter.right);
}
iter=iter.left;
}
}


从一个二叉树先序遍历程序的完成过程,想学习一下程序的优化方法。希望跟大家学习一下程序的优化经验,除了算法本身,还应当从哪几方面入手。
...全文
86 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq120848369 2011-05-26
  • 打赏
  • 举报
回复
用栈模拟先序遍历,初始化根入栈.

每次取栈顶,打印之,并且根据结点标记决定左孩子入栈还是右孩子入栈还是自己退栈.

如此如此,一直到栈空为止.
www_adintr_com 2011-05-26
  • 打赏
  • 举报
回复
首先能不用 new 的内存就最好别用. new 堆内存比用栈里的内存慢是数量级以上的了.
turing-complete 2011-05-26
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 qq120848369 的回复:]
C/C++ code
用栈模拟先序遍历,初始化根入栈.

每次取栈顶,打印之,并且根据结点标记决定左孩子入栈还是右孩子入栈还是自己退栈.

如此如此,一直到栈空为止.
[/Quote]

大侠不必局限于这个程序上,谈一谈对程序优化的经验和理解。

64,331

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧