python二叉树问题的示例分析
发表于:2025-02-02 作者:千家信息网编辑
千家信息网最后更新 2025年02月02日,这篇文章给大家介绍python二叉树问题的示例分析,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。题目链接LeetCode 199. 二叉树的右视图[1]题目描述给定一棵二叉树,想
千家信息网最后更新 2025年02月02日python二叉树问题的示例分析
这篇文章给大家介绍python二叉树问题的示例分析,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。
题目链接
LeetCode 199. 二叉树的右视图[1]
题目描述
给定一棵二叉树,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。
示例1
输入:[1,2,3,null,5,null,4]输出:[1,3,4]解释: 1 <--- / \2 3 <--- \ \ 5 4 <---
题解
dfs
dfs 的思路就是直接递归求解左右子树各自能看到的右视图是什么,然后判断两个视图长度。
如果右子树右视图长度大于等于左子树右视图长度,那左子树完全被挡住。不用管左子树了,直接返回根结点加上右子树右视图就行了。
否则的话,左子树中超出右子树深度的部分不会被挡住,也会被看到,所以得拼接在右子树右视图后面。
bfs
bfs 的思路就是层次遍历了。对二叉树的每一层,只取最后一个结点就行了。
bfs 的话就得用一个队列来维护结点值了,那么怎么知道哪些结点是同一层的呢?最初的想法是用一个 pair
再保存一个深度值,但是这样有点多余了。
我们只需要每次队列中只保存同一层的结点,然后记录下队列大小。然后依次出队,直到出队个数达到之前记录的大小。并且同时将所有的下一层结点入队。这样就能保证这一层的结点全部出队之后,队列中只剩下了下一层的结点。
代码
dfs(c++)
class Solution {public: vectorrightSideView(TreeNode* root) { if (!root) return {}; vector left = rightSideView(root->left); vector right = rightSideView(root->right); vector res = {root->val}; for (auto x : right) res.push_back(x); for (int i = right.size(), sz = left.size(); i < sz; ++i) { res.push_back(left[i]); } return res; }};
bfs(c++)
class Solution {public: vectorrightSideView(TreeNode* root) { vector res; queue Q; if (root) Q.push(root); while (!Q.empty()) { int sz = Q.size(); while (sz--) { TreeNode* node = Q.front(); Q.pop(); if (!sz) res.push_back(node->val); if (node->left) Q.push(node->left); if (node->right) Q.push(node->right); } } return res; }};
关于python二叉树问题的示例分析就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
子树
结点
视图
队列
示例
长度
问题
分析
内容
右侧
大小
就是
思路
更多
深度
题目
c++
帮助
不错
不用
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
bat文件怎么访问达梦数据库
ftp服务器端口号怎么查
百度物资采购数据库
玄铁服务器挖矿
2016年重大网络安全事故
计算机网络安全技术探究
数据库判断栈是否为空代码
伴随网络技术的发展英语翻译
网络技术团队制度
数据库重排id序号
做好网络安全工作培训感想
政法网络安全依法处置机构
英语演讲关于网络安全
无锡推广网络技术收费标准
vfpro数据库
成都美谷软件开发
农业农村局网络安全自查报告
送水软件开发
中央网信办网络安全专业
网络安全容错能力
mcu软件开发是做什么
u8邮件服务器设置
苏州软件开发人员招聘
线上教育软件开发专业
何生电路软件开发
少儿教育与网络安全
郑州文件服务器租用
数据库在电脑上能用吗
怎么查看服务器版本
window服务器管理器