给定一个二叉树,返回它的 前序 遍历。
示例:
输入: [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) {ArrayList<Integer> pre = new ArrayList<>();preHelper(root,pre);return pre;}public void preHelper(TreeNode root, List<Integer> pre) {if(root==null) return;pre.add(root.val);preHelper(root.left,pre);preHelper(root.right,pre);}}
法二:迭代
//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) {Stack<Integer> res = new Stack<>();Stack<TreeNode> stack = new Stack<>();stack.push(root);while (!stack.isEmpty()) {TreeNode node = stack.pop();if (node != null) {res.add(node.val);stack.push(node.right);stack.push(node.left);}}return res;}}

