当前位置: 首页 > news >正文

文化建设设计公司网站跨境电商亚马逊

文化建设设计公司网站,跨境电商亚马逊,怎么给网站做懒加载,济南建设局官网原题链接#x1f517;#xff1a;二叉树的直径 难度#xff1a;简单⭐️ 题目 给你一棵二叉树的根节点#xff0c;返回该树的 直径 。 二叉树的 直径 是指树中任意两个节点之间最长路径的 长度 。这条路径可能经过也可能不经过根节点 root 。 两节点之间路径的 长度 由…原题链接二叉树的直径 难度简单⭐️ 题目 给你一棵二叉树的根节点返回该树的 直径 。 二叉树的 直径 是指树中任意两个节点之间最长路径的 长度 。这条路径可能经过也可能不经过根节点 root 。 两节点之间路径的 长度 由它们之间边数表示。 示例 1 输入root [1,2,3,4,5] 输出3 解释3 取路径 [4,2,1,3] 或 [5,2,1,3] 的长度。 示例 2 输入root [1,2] 输出1 提示 树中节点数目在范围 [1, 104] 内-100 Node.val 100 二叉树直径 二叉树的直径通常指的是二叉树中任意两个节点间的最长路径的长度。这个路径不一定经过根节点。二叉树的直径可以通过以下步骤求解 计算高度首先需要计算二叉树的高度。这可以通过递归函数实现递归地计算左子树和右子树的高度并返回两者中较大的一个加上当前节点的高度。 更新直径在计算高度的同时可以更新直径。对于每个节点其左子树的高度加上其右子树的高度就是通过该节点的路径长度这个长度可能是当前的直径。 返回结果最终返回记录的最大直径值。 题解 递归法 解题思路 理解问题首先明确题目要求的“直径”是指二叉树中任意两个节点之间的最长路径长度。这个路径可以不经过根节点。 递归计算高度二叉树的高度可以通过递归计算得到。对于每个节点其高度是其左子树和右子树高度的最大值加1。 同时更新直径在计算高度的过程中可以同时更新直径。对于每个节点其左子树的高度加上其右子树的高度就是通过该节点的一条可能的最长路径长度。这个长度可能是当前的直径。 使用辅助变量由于直径的计算依赖于递归过程中的信息因此可以使用一个辅助变量来存储遍历过程中发现的最长路径长度。 遍历结束当递归遍历完整棵树后辅助变量中存储的就是二叉树的直径。 注意边界条件在递归函数中如果当前节点为空应该返回0因为空树的高度是0。 返回结果最终返回辅助变量中的值作为二叉树的直径。 复杂度 时间复杂度O(N)其中 N 为二叉树的节点数即遍历一棵二叉树的时间复杂度每个结点只被访问一次。空间复杂度O(Height)其中 Height 为二叉树的高度。由于递归函数在递归过程中需要为每一层递归函数分配栈空间所以这里需要额外的空间且该空间取决于递归的深度而递归的深度显然为二叉树的高度并且每次递归调用的函数里又只用了常数个变量所以所需空间复杂度为 O(Height)。 c demo #include iostream #include algorithm #include climits #include queue// 定义二叉树的节点结构 struct TreeNode {int val;TreeNode* left;TreeNode* right;TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} };// 解决方案类 class Solution { public:// 计算二叉树的直径int diameterOfBinaryTree(TreeNode* root) {this-maxDiameter 0; // 初始化最大直径为0calculateHeight(root); // 计算树的高度并更新最大直径return maxDiameter;}private:int maxDiameter; // 用于存储最大直径// 计算以node为根的二叉树的高度并更新最大直径int calculateHeight(TreeNode* node) {if (!node) return 0; // 如果节点为空返回高度0// 计算左子树和右子树的高度int leftHeight calculateHeight(node-left);int rightHeight calculateHeight(node-right);// 更新最大直径如果通过当前节点的路径更长maxDiameter std::max(maxDiameter, leftHeight rightHeight);// 返回当前节点的高度即左右子树高度的最大值加1return std::max(leftHeight, rightHeight) 1;} };// 主函数用于测试算法 int main() {// 创建一个示例二叉树// 1// / \// 2 3// / \// 4 5TreeNode* root new TreeNode(1);root-left new TreeNode(2);root-right new TreeNode(3);root-left-left new TreeNode(4);root-left-right new TreeNode(5);// 创建解决方案实例Solution solution;// 计算并输出二叉树的直径std::cout The diameter of the binary tree is: solution.diameterOfBinaryTree(root) std::endl;// 清理分配的内存在实际应用中应该使用智能指针来避免内存泄漏delete root-left-left;delete root-left-right;delete root-left;delete root-right;delete root;return 0; }输出结果 The diameter of the binary tree is: 3
http://www.pierceye.com/news/146630/

相关文章:

  • 上海php网站开发公司wordpress 邮件认证
  • 教做香肠的网站张家港专业网站建设
  • 园林建设网站营销型网站的建站步骤是什么意思
  • 招聘求职网站html模板正规的创业商机网
  • 预付网站建设费会计处理哪里建网站好
  • 做免费网站艺术学院网站建设管理办法
  • 做网站贵吗手机网站wap
  • linux建立网站做网站的应该怎么发广告
  • wordpress使用端口百度seo排名软
  • 用英文字母做网站关键词个人网站的设计与实现专业论文图像处理工具
  • 重庆企业网站推广流程php网站开发技术训练心得
  • 汽车销售网站学校建网站
  • 两台电脑一台做服务器 网站潍坊专业网站建设多少钱
  • 青岛科技街网站建设安徽 网站开发
  • 黑糖不苦建设的网站wordpress获取文章图片不显示
  • 美食网站建设的功能免费做简历的网站
  • 网站建设公司谁管手机如何创建网站
  • 可以自己做网站优化吗最好用的wordpress主题
  • 瓜子二手车网站开发智慧团建注册登记入口
  • 青岛网站开发建设安阳市商祺网络有限责任公司
  • 自己怎么做装修网站网站建设设计岗位职责
  • php语言 网站建设投资2 3万小生意
  • 全美网站开发微转app是用网站做的吗
  • 禹州 什么团购网站做的好广州网站建设程序开发
  • 成都市微信网站建设公司专业app开发
  • 郑州网站建设hndream神木网站设计公司
  • 关于网站集约化建设的讲话抓取网站访客qq号码
  • 南昌住房城市建设支行官方网站海洋网络提供网站建设
  • 网站外链建设的八大基本准则做网站卖得出去吗
  • 网站建设不完整 审核天元建设集团有限公司一公司尤作岭