[LC515]在每个树的行中找最大值

题目内容

[LC515]在每个树的行中找最大值

题目分析

这是一道典型的树结构遍历题,可以使用层序遍历(BFS)或者(DFS)进行解题。

  • 在BFS中,使用队列结构遍历树的每一层并维护每层的最大值。
  • 在DFS中,由于并不是一层一层的去访问树的节点,因此需要使用HashMap来维护每个层最大值。

BFS

    public List<integer> largestValues(TreeNode root) {
        Deque<treenode> queue = new ArrayDeque();
        if (root != null) queue.add(root);
        List<integer> res = new ArrayList();
        while(!queue.isEmpty()){
            int sz = queue.size();
            Integer levelMax = Integer.MIN_VALUE;
            for(int i = 0; i < sz; i++){
                TreeNode node = queue.pollFirst();
                levelMax = Math.max(levelMax, node.val);
                if (node.left != null) queue.addLast(node.left);
                if (node.right != null) queue.addLast(node.right);
            }
            res.add(levelMax);
        }
        return res;
    }
</integer></treenode></integer>

DFS

    int maxDepth = 0;
    Map<integer, integer> map = new HashMap<>();
    public List<integer> largestValues(TreeNode root) {
        List<integer> res = new ArrayList<>();
        dfs(root, 1);
        for (int i = 1; i <= max; i++) res.add(map.get(i)); return res; } void dfs(treenode node, int depth) { if (node="=" null) ; maxdepth="Math.max(maxDepth," depth); map.put(depth, math.max(map.getordefault(depth, integer.min_value), node.val)); dfs(node.left, depth + 1); dfs(node.right, < code></=></integer></integer></integer,>

Original: https://www.cnblogs.com/xy1997/p/16410447.html
Author: xingyuanyuan
Title: [LC515]在每个树的行中找最大值

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/588104/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球