LntCode_二叉树的排序方法
来源:互联网 发布:网络瓶颈有哪些 编辑:程序博客网 时间:2024/05/20 07:59
二叉树的排序方法主要有下图三种:
(1)、前序序列:根节点->左子树->右子树
(2)、中序序列:左子树->根节点->右子树
(3)、后序序列:左子树->右子树->根节点
1、中序排序方法:
(1)、非递归算法:
public ArrayList<Integer> inorderTraversal(TreeNode root) { // write your code here //用于保存中序遍历的结果 ArrayList<Integer> res=new ArrayList<Integer>(); //用于返回上一层二叉树 ArrayList<TreeNode> p=new ArrayList<TreeNode>(); //如果root不为空或者p中还有元素 while(root!=null||p.size()!=0){ //如果root不为空,将root添加至p中,且root置为左子树; while(root!=null){ p.add(root); root=root.left; } //已经遍历到二叉树最左边的结点了,root.left=null,则将root加入res中,且遍历root的右子树 root=p.get(p.size()-1); res.add(root.val); p.remove(p.get(p.size()-1)); root=root.right; } return res; }
2、前序排序方法:
//前序排列 public ArrayList<Integer> preorderTraversal(TreeNode root) { //用于保存中序遍历的结果 ArrayList<Integer> res=new ArrayList<Integer>(); //用于返回上一层二叉树 ArrayList<TreeNode> p=new ArrayList<TreeNode>(); //如果root不为空或者p中还有元素,且将root添加到res中 while(root!=null||p.size()!=0){ //如果root不为空,将root添加至p中,且root置为左子树; //res.add(root.val)语句的位置,是中序和前序的唯一区别 while(root!=null){ p.add(root); res.add(root.val); root=root.left; } //已经遍历到二叉树最左边的结点了,root.left=null,则遍历root的右子树 root=p.get(p.size()-1); p.remove(p.get(p.size()-1)); root=root.right; } return res; }
0 0
- LntCode_二叉树的排序方法
- js javascript 二叉树排序方法
- 排序二叉树的实现
- 二叉树排序的正解
- 二叉树排序的插入
- 排序二叉树的形成
- 二叉树的层排序
- 平衡二叉树 STL multiset初识 再加上自定义的排序方法。
- 【二叉树】二叉树排序树的判断、插入
- 二叉树-排序二叉树的简单实现
- 二叉树的创建、遍历、排序二叉树、多叉树创建
- 二叉树,排序二叉树
- 二叉树的遍历方法
- 二叉树的遍历方法
- 二叉树的构造方法
- 二叉树的遍历方法
- 二叉树的遍历方法
- 二叉树的遍历方法
- 详解Android中AsyncTask的使用
- Loadrunner使用键盘快捷键
- Android 源码解析:EventBus
- Apache ActiveMQ 启动失败解决方法
- for循环计算元素坐标
- LntCode_二叉树的排序方法
- CE-LINK USB以太网转换器在升级EI Caption后连接问题
- sqlite3
- java Callable与Future的介绍
- 习惯命令
- Facebook分享报错:应用程序配置禁止了给定网址
- 【xampp】在phpmyadmin中修改了用户的密码,登录不了数据库
- Android 属性动画(Property Animation) 完全解析 (上)
- JavaScript中的类和原型的理解