递归与非递归的算法效率
2016-07-19 11:07
344 查看
背景:
操作给定的二叉树,将其变换为源二叉树的镜像。
输入描述:
代码1:递归
/**
public class TreeNode {
int val = 0;
TreeNode left = null;
TreeNode right = null;
public TreeNode(int val) {
this.val = val;
}
}
*/
public class Solution {
public void Mirror(TreeNode root) {
if(root!=null){
TreeNode left = root.left;
root.left = root.right;
root.right = left;
Mirror(root.left);
Mirror(root.right);
}
}
}
代码2:非递归
结果:
题目描述
操作给定的二叉树,将其变换为源二叉树的镜像。 输入描述:
二叉树的镜像定义:源二叉树 8 / \ 6 10 / \ / \ 5 7 9 11 镜像二叉树 8 / \ 10 6 / \ / \ 11 9 7 5
代码1:递归
/**
public class TreeNode {
int val = 0;
TreeNode left = null;
TreeNode right = null;
public TreeNode(int val) {
this.val = val;
}
}
*/
public class Solution {
public void Mirror(TreeNode root) {
if(root!=null){
TreeNode left = root.left;
root.left = root.right;
root.right = left;
Mirror(root.left);
Mirror(root.right);
}
}
}
代码2:非递归
/** public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; } } */ import java.util.*; public class Solution { public void Mirror(TreeNode root) { List listNode = new ArrayList(); if(root!=null){ listNode.add(root); TreeNode p1,p2; while(listNode.size() > 0){ p1 = listNode.remove(0); if(p1.left!=null){ listNode.add(p1.left); } if(p1.right!=null){ listNode.add(p1.right); } p2=p1.right; p1.right=p1.left; p1.left = p2; } } } }
结果:
相关文章推荐
- hdu 5172 GTY's gay friends(线段树+前缀和)
- 适配器模式——得心应手的“粘合剂”
- iOS开发从入门到精通--开关按钮UISwitch控件
- 整理前段各种验证
- (高级篇)jQuery学习之jQuery Ajax用法详解
- UVa 471 - Magic Numbers
- PAT1010 一元多项式求导
- wi10优化
- Longest Substring Without Repeating Characters
- Qt基于FFmpeg播放本地 H.264(H264)文件
- adapter如何finish activity
- Android studio value 2 (com.android.dex.DexException:资源重复引用或者加载问题)
- pthread_mutex_t
- 在 Linux 上使用 VirtualBox 的命令行管理界面
- 大理石在哪?(Where is the Marble?,UVa 10474)
- 在 Linux 上使用 VirtualBox 的命令行管理界面
- dTree组件的学习
- Disruptor 详解
- C语言putenv()函数:改变或增加环境变量
- Java 的JSON、XML转换方法——目录索引