12月28日代码随想录N叉树的层序遍历、在每个树行中找最大值

429.N叉树的层序遍历

给定一个 N 叉树,返回其节点值的层序遍历。(即从左到右,逐层遍历)。

树的序列化输入是用层序遍历,每组子节点都由 null 值分隔(参见示例)。

示例 1:

12月28日代码随想录N叉树的层序遍历、在每个树行中找最大值_第1张图片

输入:root = [1,null,3,2,4,null,5,6]
输出:[[1],[3,2,4],[5,6]]

示例 2:

12月28日代码随想录N叉树的层序遍历、在每个树行中找最大值_第2张图片

输入:root = [1,null,2,3,4,5,null,null,6,7,null,8,null,9,10,null,null,11,null,12,null,13,null,null,14]
输出:[[1],[2,3,4,5],[6,7,8,9,10],[11,12,13],[14]]

提示:

  • 树的高度不会超过 1000
  • 树的节点总数在 [0, 10^4] 之间

思路

层序遍历的经典思想,稍微把找左右儿子的逻辑改为遍历所有儿子节点即可完成层序遍历。

class Solution {
    public List> levelOrder(Node root) {
       List> ans=new ArrayList<>();
        Deque stack=new ArrayDeque<>();
        if(root==null){
            return ans;
        }
        stack.addLast(root);
        while (!stack.isEmpty()) {
            int len=stack.size();
            ArrayList temp=new ArrayList<>();
            for(int i=0;i

515在每个树行中找最大值

给定一棵二叉树的根节点 root ,请找出该二叉树中每一层的最大值。

示例1:

12月28日代码随想录N叉树的层序遍历、在每个树行中找最大值_第3张图片

输入: root = [1,3,2,5,3,null,9]
输出: [1,3,9]

示例2:

输入: root = [1,2,3]
输出: [1,3]

提示:

  • 二叉树的节点个数的范围是 [0,104]
  • -231 <= Node.val <= 231 - 1

思路

还是层序遍历老代码,每次循环记录最大值然后保存即可。

class Solution {
    public List largestValues(TreeNode root) {
        List ans=new ArrayList<>();
        Deque stack=new ArrayDeque<>();
        if(root==null){
            return ans;
        }
        stack.addLast(root);
        ans.add(root.val);
        while (!stack.isEmpty()) {
            int len=stack.size();
            ArrayList temp=new ArrayList<>();
            int max=-2147483648;
            for(int i=0;imax)
                        max=node.left.val;
                }
                if(node.right!=null){
                    stack.addLast(node.right);
                    if(node.right.val>max)
                        max=node.right.val;
                }
                stack.pollFirst();
            }
            if(!stack.isEmpty())
                ans.add(max);
        }
        return ans;
    }
}

要注意的点是这段代码的逻辑是判断下一层的最大值,所以到最后一层时要加一个判断栈非空否则会出现最小值。

总结

还是老方法。

你可能感兴趣的:(java,算法)