首页 > 其他分享 >代码随想录:找树左下角的值

代码随想录:找树左下角的值

时间:2025-01-12 20:45:21浏览次数:1  
标签:right TreeNode int 找树 随想录 que 左下角 size left

代码随想录:找树左下角的值

层次遍历轻轻松松

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode() : val(0), left(nullptr), right(nullptr) {}
 *     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
 *     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left),
 * right(right) {}
 * };
 */
class Solution {
public:
    int findBottomLeftValue(TreeNode* root) {
        if (!root)
            return 0;
        queue<TreeNode*> que;
        que.push(root);
        while (!que.empty()) {
            int this_left;
            int next_size = 0;
            int size = que.size();
            for (int i = 0; i < size; i++) {
                TreeNode* target = que.front();
                que.pop();
                if (i == 0)
                    this_left = target->val;
                if (target->left) {
                    que.push(target->left);
                    next_size++;
                }
                if (target->right) {
                    que.push(target->right);
                    next_size++;
                }
            }
            if (next_size == 0)
                return this_left;
        }
        return 0;
    }
};

标签:right,TreeNode,int,找树,随想录,que,左下角,size,left
From: https://www.cnblogs.com/huigugu/p/18667253

相关文章

  • 代码随想录:左叶子之和
    代码随想录:左叶子之和没啥意思,很铸币的判断方法/***Definitionforabinarytreenode.*structTreeNode{*intval;*TreeNode*left;*TreeNode*right;*TreeNode():val(0),left(nullptr),right(nullptr){}*TreeNode(intx):v......
  • 代码随想录算法训练营第二天 | Leetcode 209、Leetcode 59、kama 44、kama 58
    Leetcode209#include"iostream"#include"vector"usingnamespacestd;intminSubArrayLen(inttarget,vector<int>&nums){intlen=INT32_MAX;intsum=0;for(intj=0,i=0;j<nums.size();j++){......
  • 代码随想录训练营第四十五天| 115.不同的子序列 583. 两个字符串的删除操作 72. 编辑
    115.不同的子序列题目链接:115.不同的子序列-力扣(LeetCode)讲解链接:代码随想录 hard确实不好直接说出来粘一下思路:(引自代码随想录)确定dp数组(dptable)以及下标的含义dp[i][j]:以i-1为结尾的s子序列中出现以j-1为结尾的t的个数为dp[i][j]。为什么i-1,j-1这么定义卡哥......
  • 代码随想录算法训练营第4天 | 24. 两两交换链表中的节点,19.删除链表的倒数第N个节点,面
    一、刷题部分1.124.两两交换链表中的节点原文链接:代码随想录题目链接:24.两两交换链表中的节点-力扣(LeetCode)1.1.1题目描述给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。示例1:输......
  • 代码随想录算法训练营day16(0109)
    很痛苦,也是对自己放松的一种惩罚吧!大半夜的冻着脚在这里写算法,最难受的是还不会写!!!!1.找树左下角的值层序遍历比较简单,但是递归有点不太明白怎么整。因为要的是最后一行的最左边的值。递归首先是要明白怎么获得我们想要的左下角,其实就是最底层的左边,那么可以确定的是只要先左......
  • 代码随想录:翻转二叉树
    代码随想录:翻转二叉树就是遍历/***Definitionforabinarytreenode.*structTreeNode{*intval;*TreeNode*left;*TreeNode*right;*TreeNode():val(0),left(nullptr),right(nullptr){}*TreeNode(intx):val(x),left(null......
  • 代码随想录:对称二叉树
    代码随想录:对称二叉树递归挺巧妙的,平时我肯定会用层次遍历,然后双指针看数组是否对称。递归代码:/***Definitionforabinarytreenode.*structTreeNode{*intval;*TreeNode*left;*TreeNode*right;*TreeNode():val(0),left(nullptr),......
  • 代码随想录算法训练营第一天 | Leetcode 027、Leetcode 704、Leetcode 977
    Leetcode027双指针覆盖目标元素#include"iostream"#include"vector"usingnamespacestd;intremoveElement(vector<int>&nums,intval){inti=0;for(intj=0;j<nums.size();j++){if(nums[j]!=val){......
  • 【代码随想录】刷题记录(95)-合并区间
    题目描述:以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i]=[starti,endi] 。请你合并所有重叠的区间,并返回 一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间 。 示例1:输入:intervals=[[1,3],[2,6],[8,10],[15,18]]输出:[[1,6],[8,10]......
  • 【代码随想录】刷题记录(94)-划分字母区间
    题目描述:给你一个字符串 s 。我们要把这个字符串划分为尽可能多的片段,同一字母最多出现在一个片段中。注意,划分结果需要满足:将所有划分结果按顺序连接,得到的字符串仍然是 s 。返回一个表示每个字符串片段的长度的列表。 示例1:输入:s="ababcbacadefegdehijhklij"......