遍历

  Java   4分钟   1090浏览   0评论

二叉树 Z 字型遍历

考察点:遍历

import java.util.*;
public class Solution {
    public ArrayList<ArrayList<Integer>> Print(TreeNode pRoot) {
        ArrayList<ArrayList<Integer>> result = new ArrayList<>();
        Queue<TreeNode> queue = new LinkedList<TreeNode>();
        //标记奇偶层 开始为0层 从左->右遍历
        boolean flag = true;
        if (pRoot == null) {
            return result;
        }
        queue.add(pRoot);
        while (queue.size() != 0) {
            flag = !flag;
            int size = queue.size();
            ArrayList<Integer> temp = new ArrayList<Integer>();
            for (int i = 0; i < size; i++) {
                TreeNode curroot = queue.poll();
                temp.add(curroot.val);
                if (curroot.left != null) 
                    queue.add(curroot.left);
                if (curroot.right != null)
                    queue.add(curroot.right);
            }
            // 反转
            if (flag) {
                Collections.reverse(temp);
            }
            result.add(temp);
        }
        return result;
    }
}

编程题:写一个函数,找到一个文件夹下所有文件,包括子文件夹

考察点:遍历

import java.io.File;
public class Counter2 {
    public static void main(String[] args) {
        //取得目标目录
        File file = new File("D:");
        //获取目录下子文件及子文件夹
        File[] files = file.listFiles();
        readfile(files);
    }

    public static void readfile(File[] files) {
        if(files == null) {// 如果目录为空,直接退出  
            return; 
        }
        for(File f:files) {
            //如果是文件,直接输出名字
            if(f.isFile()) {
                System.out.println(f.getName());
            }
            //如果是文件夹,递归调用
            else if(f.isDirectory()) {
                readfile(f.listFiles());
            }
        }
    }
}
如果你觉得文章对你有帮助,那就请作者喝杯咖啡吧☕
微信
支付宝
  0 条评论