給定一個二叉樹,返回它的?前序?遍歷。
?示例:
輸入: [1,null,2,3] ?
? ?1
? ? \
? ? ?2
? ? /
? ?3?
輸出: [1,2,3]
進階:?遞歸算法很簡單,你可以通過迭代算法完成嗎?
思路:模仿遞歸的思路壓棧即可。
/*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode(int x) { val = x; }* }*/
class Solution {public List<Integer> preorderTraversal(TreeNode root) {List<Integer> res = new ArrayList<Integer>();if (root == null) {return res;}Stack<TreeNode> stack = new Stack<TreeNode>();stack.push(root);while (!stack.isEmpty()) {TreeNode node = stack.pop();res.add(Integer.valueOf(node.val));if (node.right != null) {stack.push(node.right);}if (node.left != null) {stack.push(node.left);}}return res;}
}
?