LeetCode 515(C#)

文章目录

题目

给定一棵二叉树的根节点 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;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值