java二叉树非递归之前序遍历
2015-08-05 12:14
369 查看
思路:采用栈来实现非递归遍历
步骤:
1.对root进行异常处理
2.将root压入栈
3.循环终止条件为栈s为空,所有元素均已处理完
4.访问当前栈顶元素(首先取出栈顶元素,随后pop掉栈顶元素)并存入最终结果
5.将右、左节点分别压入栈内,以便取元素时为先左后右。
6.返回最终结果
步骤:
1.对root进行异常处理
2.将root压入栈
3.循环终止条件为栈s为空,所有元素均已处理完
4.访问当前栈顶元素(首先取出栈顶元素,随后pop掉栈顶元素)并存入最终结果
5.将右、左节点分别压入栈内,以便取元素时为先左后右。
6.返回最终结果
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */ public class Solution { public List<Integer> preorderTraversal(TreeNode root) { List<Integer> result = new ArrayList<Integer>(); if (root == null) return result; Stack<TreeNode> s = new Stack<TreeNode>(); s.push(root); while (!s.empty()) { TreeNode node = s.pop(); result.add(node.val); if (node.right != null) s.push(node.right); if (node.left != null) s.push(node.left); } return result; } }
相关文章推荐
- Java类的变量初始化顺序
- Java类的变量初始化顺序
- Java获取系统IP地址
- HDFS中Java的API使用测试
- JDK 1.7当中的文件属性、权限操作
- JDK 1.7当中的文件属性、权限操作
- JDK 1.7当中的文件属性、权限操作
- Eclipse java.lang.OutOfMemoryError: Java heap space故障处理过程
- Java动态代理详解
- java 怎样追加文本到远程服务器上的文件,利用ftpclient
- Java编程中“为了性能”需做的26件事
- springMVC 注解方式实现全程+文件上传
- Java MD5 加密
- A + B Problem II(java的简单大数加法)及java环境的配置
- java 封装、继承和多态
- java如何获取方法参数名
- java交换两个数的常见方法及效率测试
- java中简单实现MD5加密
- Java中PreparedStatement和Statement的用法区别
- java-解决随机类型概率问题