/** * Definition for a binary tree node. * public class TreeNode { * public int val; * public TreeNode left; * public TreeNode right; * public TreeNode(int x) { val = x; } * } */ public class Solution { Queue<TreeNode> Q = new Queue<TreeNode>(); private List<TreeNode> FloorSearch() { var floor = new List<TreeNode>(); while (Q.Count > 0) { var node = Q.Dequeue();//出来一个节点,放入其左右子节点 //将当前节点放入floor中 floor.Add(node); } foreach (var f in floor) { if (f.left != null) { Q.Enqueue(f.left); } if (f.right != null) { Q.Enqueue(f.right); } } return floor; } public IList<int> LargestValues(TreeNode root) { var list = new List<int>(); //层次遍历,每一层加入到一个list中,然后再从list中找最大的值 if (root == null) { return new List<int>(); } Q.Enqueue(root); var floor = new List<TreeNode>(); do { floor = FloorSearch(); if (floor.Count > 0) { var max = floor.Max(x => x.val); list.Add(max); } } while (floor.Count > 0); return list; } }
https://leetcode.com/problems/find-largest-value-in-each-tree-row/#/description