leetcode 144. Binary Tree Preorder Traversal ----- java

时间:2023-08-16 22:39:50

Given a binary tree, return the preorder traversal of its nodes' values.

For example:
Given binary tree {1,#,2,3},

   1
\
2
/
3

return [1,2,3].

Note: Recursive solution is trivial, could you do it iteratively?

求前序遍历,要求不用递归。
使用双向队列。
/**
* 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) { Deque<TreeNode> queue = new ArrayDeque<TreeNode>(); List list = new ArrayList<Integer>(); if( root == null )
return list; queue.add(root); while( !queue.isEmpty() ){ TreeNode node = queue.poll();
list.add(node.val); if( node.right != null )
queue.addFirst(node.right);
if( node.left != null )
queue.addFirst(node.left); } return list; }
}