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

北京电子商务app网站建设大兴灵感关键词生成器

北京电子商务app网站建设大兴,灵感关键词生成器,手机网站建设服务热线,网页版梦幻西游红拂女110. 平衡二叉树 给定一个二叉树,判断它是否是高度平衡的二叉树。 本题中,一棵高度平衡二叉树定义为: 一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1 。 示例 1: 输入:root [3,9,20,null,null,15,7] …

110. 平衡二叉树

给定一个二叉树,判断它是否是高度平衡的二叉树。

本题中,一棵高度平衡二叉树定义为:

一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1 。

示例 1:

在这里插入图片描述

输入:root = [3,9,20,null,null,15,7]
输出:true

示例 2:

在这里插入图片描述

输入:root = [1,2,2,3,3,null,null,4,4]
输出:false

示例 3:

输入:root = []
输出:true

提示:

  • 树中的节点数在范围 [0, 5000] 内
  • −104<=Node.val<=104-10^4 <= Node.val <= 10^4104<=Node.val<=104

思路:自底向上的递归

自底向上递归的做法类似于后序遍历:

  • 对于当前遍历到的节点,先递归地判断其左右子树是否平衡;
  • 再判断以当前节点为根的子树是否平衡。如果存在一棵子树不平衡,则整个二叉树一定不平衡, 则返回。
  • 如果一棵子树是平衡的,则返回其高度(取左右子树最大值);

代码:(Java、C++)

Java

/*** Definition for a binary tree node.* public class TreeNode {*     int val;*     TreeNode left;*     TreeNode right;*     TreeNode() {}*     TreeNode(int val) { this.val = val; }*     TreeNode(int val, TreeNode left, TreeNode right) {*         this.val = val;*         this.left = left;*         this.right = right;*     }* }*/
class Solution {private boolean result = true;public boolean isBalanced(TreeNode root) {height(root);return result;}public int height(TreeNode root){if(root == null) return 0;int left = height(root.left);int right = height(root.right);if(Math.abs(left - right) > 1){result = false;return 0;}return 1 + Math.max(left, right);}
}

C++

/*** 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:bool result = true;bool isBalanced(TreeNode* root) {height(root);return result;}int height(TreeNode* root){if(root == NULL) return 0;int left = height(root->left);int right = height(root->right);if(abs(left - right) > 1){result = false;return 0;}return 1 + max(left, right);}
};

运行结果:

在这里插入图片描述

复杂度分析:

  • 时间复杂度O(n)O(n)O(n),其中 n 是二叉树中的节点个数。使用自底向上的递归,每个节点的计算高度和判断是否平衡都只需要处理一次,最坏情况下需要遍历二叉树中的所有节点,因此时间复杂度是 O(n)O(n)O(n)

  • 空间复杂度O(n)O(n)O(n),其中 n 是二叉树中的节点个数。空间复杂度主要取决于递归调用的层数,递归调用的层数不会超过 n

题目来源:力扣。

放弃一件事很容易,每天能坚持一件事一定很酷,一起每日一题吧!
关注我 leetCode专栏,每日更新!

注: 如有不足,欢迎指正!

http://www.yidumall.com/news/61132.html

相关文章:

  • 网站建设 技术支持 阿里广州网络seo优化
  • 成人大专自我鉴定seo排名快速优化
  • 公司做网站好今天的新闻最新消息
  • 网站宣传策略汕头seo外包公司
  • php能开发大型网站无锡谷歌优化
  • 网站网页区别是什么意思百度搜索引擎网址格式
  • wordpress 百度空间优化大师的三大功能
  • 域名注册和网站设计服务南宁百度seo排名公司
  • 网站页面策划开发一个网站的步骤流程
  • node做网站优势职业培训学校加盟合作
  • 呼伦贝尔网站建设呼伦贝尔seo权重优化软件
  • 网站框架怎么设计seo基础教程视频
  • 网站设计职业工作室百度客服人工在线咨询电话
  • 网站建设安全如何优化推广网站
  • 做外贸网站要有域名重庆网络推广专员
  • 申请制作网站各大网站排名
  • 江门做网站seo的十大经典口碑营销案例
  • pc端自适应网站模板优化大师如何删掉多余的学生
  • 电子商务网站建设薛万欣金华seo全网营销
  • 搜索引擎营销的内容和层次有哪些seo指导
  • 新手做自己的网站公司网页制作
  • 网站与网站做外链好吗cms自助建站系统
  • 经常投诉网站快照网站模板库
  • banner在线设计网站今日头条淄博新闻
  • 网站建设的功能定位有没有推广app的平台
  • 深圳网站建设前十名公司网站设计
  • 简历下载免费模板西安网站seo技术厂家
  • wordpress缩略图插件seo国外推广软件
  • c网站开发源代码如何做个人网站
  • 如何用ftp登陆网站百度搜一下