您的位置:首页 > 编程语言 > Java开发

java二叉树非递归之前序遍历

2015-08-05 12:14 369 查看
思路:采用栈来实现非递归遍历

步骤:

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;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: