思路:采用栈来实现非递归遍历
步骤:
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;
}
}
转载自:http://blog.csdn.net/u013812939/article/details/47294719