题解 | 二叉树的前序遍历
二叉树的前序遍历
https://www.nowcoder.com/practice/5e2135f4d2b14eb8a5b06fab4c938635
import java.util.*;
/*
* public class TreeNode {
* int val = 0;
* TreeNode left = null;
* TreeNode right = null;
* public TreeNode(int val) {
* this.val = val;
* }
* }
*/
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param root TreeNode类
* @return int整型一维数组
*/
// 长度不确认 用list先保存最后转数值
List<Integer> list = new ArrayList<>();
public int[] preorderTraversal (TreeNode root) {
dfs(root);
//非法值处理
if(list.size() == 0){
return new int[0];
}
int[] nums = new int[list.size()];
//list转数组
for(int i = 0;i < nums.length;i++){
nums[i] = list.get(i);
}
return nums;
}
void dfs(TreeNode root){
// 写个递归方法如果当前节点为空 则返回
if(root == null){
return ;
}
//不为空 则先访问当前节点,添加到list
list.add(root.val);
//再访问左节点
dfs(root.left);
//再访问右节点
dfs(root.right);
}
}
