您的位置:首页 > 其它

JZ045:二叉树最底层最左边的值

2022-05-11 21:57 2241 查看 https://www.cnblogs.com/d-book

title: 二叉树最底层最左边的值

📃 题目描述

题目链接:二叉树最底层最左边的值相同的题目

🔔 解题思路

方法一:采用队列进行层次遍历,每次将每层的第一个值放保存在答案,遍历完该二叉树,那必然就是最底层最左边的节点;

方法二:方法一中的需要消耗o(n)的空间,想一下,有没有不需要消耗这个空间呢,采用dfs(但是实际dfs递归栈也消耗o

(logn)的空间复杂度)

class Solution {
public:
vector<int> res = vector<int>(2, 0); // res[0]保存答案,res[1]保存该答案所在的深度
int findBottomLeftValue(TreeNode* root) {
res[0] = root->val;
backTracking(root, 0);
return res[0];
}
void backTracking(TreeNode* root, int level) {
if (root->left == nullptr && root->right == nullptr ) { //判断是否为叶子节点
if (level > res[1]) {
res[0] = root->val;
res[1] = level;
}
return;
}

if (root->left) backTracking(root->left, level + 1);
if (root->right) backTracking(root->right, level + 1);
}
};

💥 复杂度分析

  • 时间复杂度:o(n);
  • 空间复杂度:O(logn);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: