package com.example.demo;
import java.util.ArrayList;
import java.util.List;
/**
* 144. 二叉树的前序遍历
* 给定一个二叉树,返回它的 前序 遍历。
* <p>
* 示例:
* <p>
* 输入: [1,null,2,3]
* 1
*
* 2
* /
* 3
* <p>
* 输出: [1,2,3]
*/
public class Lc144 {
//循环
// public static List<Integer> preorderTraversal(TreeNode root) {
// Stack<TreeNode> stack = new Stack<>();
// List<Integer> list = new ArrayList<>();
// TreeNode curr = root;
// while (curr!=null || !stack.isEmpty()){
// while(curr!=null){
// list.add(curr.val);
// stack.push(curr);
// curr=curr.left;
// }
// curr = stack.pop();
// curr =curr.right;
// }
// return list;
// }
//递归
static List<Integer> list = new ArrayList<>();
public static List<Integer> preorderTraversal(TreeNode root){
if(root!=null){
list.add(root.val);
preorderTraversal(root.left);
preorderTraversal(root.right);
}
return list;
}
public static void main(String[] args) {
Integer[] arr = new Integer[] { 1,2,3,4,5,6,7};
TreeNode root = CreateNode.createTree(arr).get(0);
List<Integer> list = preorderTraversal(root);
list.forEach(n -> System.out.println(n));
}
}