当前位置:网站首页>LeetCode 515(C#)

LeetCode 515(C#)

2022-07-07 15:38:00 有趣就行

文章目录

题目

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

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

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

代码

  • DFS
public class Solution 
{
    
    public IList<int> LargestValues(TreeNode root) 
    {
    
        List<int> list = new List<int>();
        Dfs(list, root, 0);
        return list;
    }

    private void Dfs(IList<int> list, TreeNode node, int depth)
    {
    
        if (node == null) return;
        if (depth >= list.Count) list.Add(node.val);
        else list[depth] = Math.Max(list[depth], node.val);

        Dfs(list, node.left, depth + 1);
        Dfs(list, node.right, depth + 1);
    }
}
  • BFS
public class Solution 
{
    
    public IList<int> LargestValues(TreeNode root) 
    {
    
        List<int> list = new List<int>();

        Queue<TreeNode> queue = new Queue<TreeNode>();
        if (root != null) queue.Enqueue(root);
        while (queue.Count > 0)
        {
    
            (int sz, int ans) = (queue.Count, int.MinValue);
            for (int i = 0; i < sz; i++)
            {
    
                var t = queue.Dequeue();
                ans = Math.Max(ans, t.val);

                if (t.left != null) queue.Enqueue(t.left);
                if (t.right != null) queue.Enqueue(t.right);
            }
            list.Add(ans);
        }

        return list;
    }
}
原网站

版权声明
本文为[有趣就行]所创,转载请带上原文链接,感谢
https://blog.csdn.net/m0_52361859/article/details/125443025