Leecode 二叉树的前序遍历
Day2 刷题
- 我的思路:用数组list存储遍历结果,利用ArrayList的方法实现嵌套!
import java.util.*;
class Solution {
// defining an arraylist
public List<Integer> preorderTraversal(TreeNode root) {
List<Integer> Traversal = new ArrayList<>();
if(root==null){
return Traversal;
}
else{
Traversal.add(root.val);
Traversal.addAll(preorderTraversal(root.left));
Traversal.addAll(preorderTraversal(root.right));
return Traversal;
}
}
}
- 力扣官方题解:思路基本一致,差别在于用了子方法preorder来代替嵌套。且官方用res来存储,我用addAll方法来完成嵌套所需。
class Solution {
public List<Integer> preorderTraversal(TreeNode root) {
List<Integer> res = new ArrayList<Integer>();
preorder(root, res);// 注意不用返回值,直接修改的是类里的对象
return res;
}
public void preorder(TreeNode root, List<Integer> res) {
if (root == null) {
return;
}
res.add(root.val);
preorder(root.left, res);
preorder(root.right, res);
}
}
- 二叉树的性质:
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode() {}
* TreeNode(int val) { this.val = val; }
* TreeNode(int val, TreeNode left, TreeNode right) {
* this.val = val;
* this.left = left;
* this.right = right;
* }
* }
*/
this是在类里面的意思,此外在编写代码时,需要什么时候把根节点的值存进list内,是判定不是空节点时。
- ArrayList的方法:
add()
添加,addAll()
添加集合中所有元素,get()
访问元素,set()
修改元素,remove()
删除元素,size()
元素数量。
ArrayList<Integer> li=new ArrayList<>();// 存放整数元素
ArrayList<Character> li=new ArrayList<>();// 存放字符元素