小念子

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

题意:

您需要在二叉树的每一行中找到最大的值

 

 解答:

携带层序,边递归遍历,边比较并更新每一层的最大值(保存在list中)

    public List<Integer> largestValues(TreeNode root) {
        if (root == null) {
            return Collections.EMPTY_LIST;
        }
        List<Integer> ret = new ArrayList<Integer>();
        traverse(root, 0, ret);
        return ret;
    }
    
    private void traverse(TreeNode root, int level, List<Integer> list) {
        if (root == null) {
            return;
        }
        if (level >= list.size()) {
            list.add(root.val);
        } else {
            if (list.get(level) < root.val) {
                list.set(level, root.val);
            }
        }
        traverse(root.left, level + 1, list);
        traverse(root.right, level + 1, list);
    }

 

posted on 2020-10-22 21:18  小念子  阅读(117)  评论(0编辑  收藏  举报