使用递归实现二叉树的前序遍历是比较简单的,如果使用迭代来实现二叉树的前序遍历就会比较困难。这里实现的方式是通过栈来进行实现。前序遍历是中左右,如果还有左子树就一直向下找,完了之后再返回从最底层逐步向上向右找。
代码:
//使用迭代法实现前序遍历
public static List<Integer> preOrderTraversal(TreeNode root){
List<Integer> res = new ArrayList<>();
if (root==null){
return res;
}
LinkedList<TreeNode> stack = new LinkedList<>();
TreeNode node = root;
while (!stack.isEmpty()||node!=null){
while (node!=null){
res.add(node.val);
stack.push(node);
node = node.left;
}
node=stack.pop();
node=node.right;
}
return res;
}