leetcode513找树左下角的值

2024-03-15 12:36

本文主要是介绍leetcode513找树左下角的值,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

解法1:BFS

思路就是层序遍历
用队列记住每层的元素,如果每次记住每层的第一个元素
---->https://programmercarl.com/0102.%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E5%B1%82%E5%BA%8F%E9%81%8D%E5%8E%86.html#_102-%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E5%B1%82%E5%BA%8F%E9%81%8D%E5%8E%86

class Solution {
public:int findBottomLeftValue(TreeNode* root) {int ans = bfs(root);return ans;}int  bfs(TreeNode* root){if(!root->left&&!root->right){return root->val;}int ans=0;queue<TreeNode*> qt;qt.push(root);while(!qt.empty()){int sz=qt.size();for (int i = 0; i < sz; ++i) {TreeNode* tn=qt.front();qt.pop();if (tn){if(i==0){ans=tn->val;}if(tn->left){qt.push(tn->left);}if(tn->right){qt.push(tn->right);}}}}return ans;}
};

解法2:DFS

往左边dfs比右边dfs先完成,如果是同一层的话,左边先得到结果
如果结果不是在同一层,那就是深度更深的先得到结果


class Solution {
public:int findBottomLeftValue(TreeNode* root) {int ans = 0,h=0,curh=0,curVal=-9999999;dfs(root,0,curh,curVal);return curVal;}void dfs(TreeNode* node,int h,int& curh,int& curVal){if(!node){return;}h++;dfs(node->left,h,curh,curVal);dfs(node->right,h,curh,curVal);if(h>curh){curh=h;curVal=node->val;}}};

这篇关于leetcode513找树左下角的值的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/811997

相关文章

算法day16(补第15天)|用递归方法求解:513.找树左下角的值

@TOC 513.找树左下角的值 递归法(补day15) 难度较大,代码如下: class Solution {public:int result;int maxdepth=INT_MIN;void traversal(TreeNode* root,int depth){if(root->left==nullptr&&root->right==nullptr){if(maxdepth<d

算法day15|513.找树左下角的值、112. 路径总和、113.路径总和Ⅱ、106.从中序与后序遍历序列构造二叉树、105.从前序与中序遍历序列构造二叉树

算法day15|513.找树左下角的值、112. 路径总和、113.路径总和Ⅱ、106.从中序与后序遍历序列构造二叉树、105.从前序与中序遍历序列构造二叉树 513.找树左下角的值迭代法 112. 路径总和113.路径总和Ⅱ106.从中序与后序遍历序列构造二叉树105.从前序与中序遍历序列构造二叉树 513.找树左下角的值 一开始题意理解错了,做了好多无用功…看来读题真的非常重

day16--513.找树左下角的值+112. 路径总和+106.从中序与后序遍历序列构造二叉树

一、513.找树左下角的值 题目链接:https://leetcode.cn/problems/find-bottom-left-tree-value/ 文章讲解:https://programmercarl.com/0513.%E6%89%BE%E6%A0%91%E5%B7%A6%E4%B8%8B%E8%A7%92%E7%9A%84%E5%80%BC.html 视频讲解:https://www

Studying-代码随想录训练营day16| 513找到左下角的值、112.路径总和、106从中序与后序遍历序列构造二叉树

第十六天,二叉树part03💪💪💪,编程语言:C++ 目录 513找到左下角的值 112.路径总和 113.路径总和II 106从中序与后序遍历序列构造二叉树  105.从前序与中序遍历序列构造二叉树  总结  513找到左下角的值 文档讲解:代码随想录找到左下角的值 视频讲解:手撕找到左下角的值 题目: 学习:注意是找到最底层最左边的值,而不是找到最左边

找树左下角的值-力扣

本题个人认为不能叫做 找树左下角的值,左下角再怎么说也应当在树的左子树上,本题要求的节点是树最底层最左边的值。 首先想到的解法是对二叉树进行层序遍历,并记录本层第一个节点的值,当层序遍历结束时,此时记录的值即为树最底层最左边的值。 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeN

173.二叉树:找树左下角的值(力扣)

代码解决 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* TreeNode(in

代码随想录算法训练营第十六天| 找树左下角的值、路径总和、 从中序与后序遍历序列构造二叉树

找树左下角的值 题目链接:找树左下角的值 文档讲解:代码随想录 状态:递归没想到中右左的遍历顺序,迭代想出来了 思路:需要找最大深度,然后使用中右左的遍历顺序找最左节点 题解: int res = 0;int maxDepth = 0;public int findBottomLeftValue(TreeNode root) {dfs(root, 0);return res

代码随想录算法训练营第十七天(py)| 二叉树 | 513.找树左下角的值、112. 路径总和、106.从中序与后序遍历序列构造二叉树

513.找树左下角的值 力扣链接 给定一个二叉树的 根节点 root,请找出该二叉树的 最底层 最左边 节点的值。 思路 层序遍历 层序遍历之后,取最后一个数组的第一个元素 class Solution:def findBottomLeftValue(self, root: Optional[TreeNode]) -> int:levels = []self.helper(root, 0,

代码随想录——找树左下角的值(Leetcode513)

题目链接 层序遍历 思路:使用层序遍历,记录每一行 i = 0 的元素,就可以找到树左下角的值 /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* T

二叉树找数左下角值

题目很容易理解:就是找二叉树左下角的值 思路:肯定是使用递归的方法,并且实现的效果是,先到最左边,然后当为叶子结点的时候比较一下当前是否为最大深度,如果是更新最大深度,并且修改结果。如果不是直接return。然后退回一步,去看下一个路口。 根据思路写代码 结束条件是:结点左边和右边都为空,if函数里的内容就是,更新最大深度,修改结果 递归函数先后顺序:先左再右 退回上一个节点路口:在递归