Leetcode之深度优先搜索(DFS)专题-515. 在每个树行中找最大值(Find Largest Value in Each Tree Row)

Leetcode之深度优先搜索(DFS)专题-515. 在每个树行中找最大值(Find Largest Value in Each Tree Row)

深度优先搜索的解题详细介绍,点击


 

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

示例:

输入: 

          1
         / \
        3   2
       / \   \  
      5   3   9 

输出: [1, 3, 9]


分析:题意很简单,直接DFS。

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
class Solution {
    
    List<Integer> ans = new ArrayList<>();
    public List<Integer> largestValues(TreeNode root) {
        if (root == null)
            return ans;
        dfs(root, 0);
        return ans;
    }

    public void dfs(TreeNode node, int depth) {
        if (node == null) {
            return;
        }
        if(depth==ans.size()){
            ans.add(node.val);
        }else if(node.val > ans.get(depth)){
            ans.set(depth, node.val);
        }

        dfs(node.left, depth + 1);
        dfs(node.right, depth + 1);
    }
    
}

 

posted @ 2019-08-13 01:12  秦羽纶  阅读(313)  评论(0编辑  收藏  举报