首页 > 其他分享 >代码随想录Day26

代码随想录Day26

时间:2022-11-17 21:47:55浏览次数:47  
标签:poll int 代码 Day26 随想录 queue 遍历 null root

LeetCode513.找树左下角的值

 

 

 

 

 

 思路:

思路1:需要遍历所有路径,找出深度最大的一条路径,并且是左叶子结点的值。

思路2:层序遍历最左值。

 

递归遍历写法:

前序遍历:中左右

传参:根节点

终止条件:当前节点为叶子节点

单层逻辑:如果到叶子节点,更新最大深度、

// 递归法
class Solution {
    private int Deep = -1;
    private int value = 0;
    public int findBottomLeftValue(TreeNode root) {
        value = root.val;
        findLeftValue(root,0);
        return value;
    }

    private void findLeftValue (TreeNode root,int deep) {
        if (root == null) return;
        if (root.left == null && root.right == null) {
            if (deep > Deep) {
                value = root.val;
                Deep = deep;
            }
        }
        if (root.left != null) findLeftValue(root.left,deep + 1);
        if (root.right != null) findLeftValue(root.right,deep + 1);
    }
}

层序遍历:

队列实现层序遍历,根据每次进队列的数量,出一定数量的值。

迭代法:

//迭代法
class Solution {

    public int findBottomLeftValue(TreeNode root) {
        Queue<TreeNode> queue = new LinkedList<>();
        queue.offer(root);
        int res = 0;
        while (!queue.isEmpty()) {
            int size = queue.size();
            for (int i = 0; i < size; i++) {
                TreeNode poll = queue.poll();
                if (i == 0) {
                    res = poll.val;
                }
                if (poll.left != null) {
                    queue.offer(poll.left);
                }
                if (poll.right != null) {
                    queue.offer(poll.right);
                }
            }
        }
        return res;
    }
}

 

标签:poll,int,代码,Day26,随想录,queue,遍历,null,root
From: https://www.cnblogs.com/dwj-ngu/p/16901074.html

相关文章