二叉树的前序遍历
题目描述
思路
使用递归来进行前序遍历,通过java集合来记录,然后集合再循环转给数组
步骤
- step 1:准备数组用来记录遍历到的节点值,Java可以用List先记录
- step 2:从根节点开始进入递归,遇到空节点就返回,否则将该节点值加入数组。
- step 3:依次进入左右子树进行递归。
代码
import java.util.*;
public class Solution {
public void preorder(List<Integer> list, TreeNode root){
//遇到空节点则返回
if(root == null)
return;
//先遍历根节点
list.add(root.val);
//再去左子树
preorder(list, root.left);
//最后去右子树
preorder(list, root.right);
}
public int[] preorderTraversal (TreeNode root) {
//添加遍历结果的数组
List<Integer> list = new ArrayList();
//递归前序遍历
preorder(list, root);
//返回的结果
int[] res = new int[list.size()];
for(int i = 0; i < list.size(); i++)
res[i] = list.get(i);
return res;
}
}
总结
- 如果方法的返回值是数组,由于一开是不知道数组的大小,所以先使用集合来进行存储记录,然后再循环遍历交给数组
- 在java中集合作为形参一直传下去,集合内的内容会变化,不会清空重新开始