龙空技术网

每日一练——搜索与回溯算法

农民工屈原 136

前言:

当前兄弟们对“搜索与回溯算法详解”大体比较关切,小伙伴们都想要知道一些“搜索与回溯算法详解”的相关资讯。那么小编也在网摘上汇集了一些有关“搜索与回溯算法详解””的相关文章,希望大家能喜欢,兄弟们快快来了解一下吧!

从上到下打印二叉树I

思路:用一个Queue来存放数组

class Solution {    public int[] levelOrder(TreeNode root) {        if(root == null){            return new int[0];        }        Queue<TreeNode> queue = new LinkedList<>();        queue.add(root);        ArrayList<Integer> list = new ArrayList<>();        while (!queue.isEmpty()){            TreeNode node = queue.poll();            list.add(node.val);            if (node.left != null){                queue.add(node.left);            }            if (node.right != null){                queue.add(node.right);            }        }        int[] res = new int[list.size()];        for (int i = 0; i < list.size(); i++) {            res[i] = list.get(i);        }        return res;    }}

从上到下打印二叉树II

思路:层次遍历,关键是记录每层的数量

class Solution {       public List<List<Integer>> levelOrder(TreeNode root) {        List<List<Integer>> res = new ArrayList<>();        Queue<TreeNode> queue = new LinkedList<>();        if(root != null){            queue.add(root);        }        while(!queue.isEmpty()){            List<Integer> temp = new ArrayList<>();            int k = queue.size();            for(int i = k; i > 0; i--){                TreeNode node = queue.poll();                temp.add(node.val);                if(node.left != null) queue.add(node.left);                if(node.right != null) queue.add(node.right);            }            res.add(temp);        }        return res;    }}

从上到下打印二叉树III:左右交替轮换

思路:1是可以用个遍历来进行转化,这里直接用res的size的奇偶来判断。

class Solution {    public List<List<Integer>> levelOrder(TreeNode root) {        List<List<Integer>> res = new ArrayList<>();        Queue<TreeNode> queue = new LinkedList<>();        if(root != null){            queue.add(root);        }        while(!queue.isEmpty()){            LinkedList<Integer> temp = new LinkedList<>();            int k = queue.size();            for(int i = k; i > 0; i--){                TreeNode node = queue.poll();                if(res.size() % 2 == 0){                    temp.addLast(node.val);                }else{                    temp.addFirst(node.val);                }                if(node.left != null) queue.add(node.left);                if(node.right != null) queue.add(node.right);                          }            res.add(temp);        }        return res;    }}

标签: #搜索与回溯算法详解 #搜索与回溯算法详解pdf