zoukankan      html  css  js  c++  java
  • [LC] 513. Find Bottom Left Tree Value

    Given a binary tree, find the leftmost value in the last row of the tree.

    Example 1:

    Input:
    
        2
       / 
      1   3
    
    Output:
    1
    

    Example 2: 

    Input:
    
            1
           / 
          2   3
         /   / 
        4   5   6
           /
          7
    
    Output:
    7
    

    Note: You may assume the tree (i.e., the given root node) is not NULL.

    Solution 1:

    DFS, preOrder

    /**
     * Definition for a binary tree node.
     * public class TreeNode {
     *     int val;
     *     TreeNode left;
     *     TreeNode right;
     *     TreeNode(int x) { val = x; }
     * }
     */
    class Solution {
        int height = 0;
        int res = 0;
        public int findBottomLeftValue(TreeNode root) {
            helper(root, 1);
            return res;
        }
        
        private void helper(TreeNode root, int depth) {
            if (root == null) {
                return;
            }
            if (height < depth) {
                height = depth;
                res = root.val;
            }
            helper(root.left, depth + 1);
            helper(root.right, depth + 1);
        }
    }

    Solution 2:

    BFS

    /**
     * Definition for a binary tree node.
     * public class TreeNode {
     *     int val;
     *     TreeNode left;
     *     TreeNode right;
     *     TreeNode(int x) { val = x; }
     * }
     */
    class Solution {
        public int findBottomLeftValue(TreeNode root) {
            Queue<TreeNode> queue = new LinkedList<>();
            int res = 0;
            queue.offer(root);
            while (!queue.isEmpty()) {
                TreeNode cur = queue.poll();
                res = cur.val;
                if (cur.right != null) {
                    queue.offer(cur.right);
                }
                if (cur.left != null) {
                    queue.offer(cur.left);
                }
            }
            return res;
        }
    }
  • 相关阅读:
    Android ANR异常解决方案
    数据结构之斐波那契查找
    数据结构之插值查找
    数据结构之折半查找
    Android Task 任务
    java中“==”号的运用
    php中向前台js中传送一个二维数组
    array_unique和array_flip 实现去重间的区别
    js new Date() 获取时间
    手机端html5触屏事件(touch事件)
  • 原文地址:https://www.cnblogs.com/xuanlu/p/12151456.html
Copyright © 2011-2022 走看看