Passion and Patience

Work Hard, Play Hard

导航

Leecode 二叉树的前序遍历

Day2 刷题

  1. 我的思路:用数组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;
        }
    }
}
  1. 力扣官方题解:思路基本一致,差别在于用了子方法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);
    }
}
  1. 二叉树的性质:
 * 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内,是判定不是空节点时。

  1. ArrayList的方法:add()添加,addAll()添加集合中所有元素,get()访问元素,set()修改元素,remove()删除元素,size()元素数量。

ArrayList<Integer> li=new ArrayList<>();// 存放整数元素

ArrayList<Character> li=new ArrayList<>();// 存放字符元素

posted on 2024-03-17 20:14  安静的聆  阅读(3)  评论(0编辑  收藏  举报