题目描述

输入一棵二叉树,判断该二叉树是否是平衡二叉树。
在这里,我们只需要考虑其平衡性,不需要考虑其是不是排序二叉树

思路:

平衡树概念和动机:

左右子树深度差<=1,并且左右子树均满足该性质的二叉搜索树BST是平衡树。

平衡树主要是通过限制左右子树的深度差来解决极端情况下BST会变线性,查找效率退化为O(N)的问题。

不难发现,BST退化为线性列表的情况。

本题方法:

通过map,递归地记录每一个节点的深度,建立节点和深度的一一对应。

再递归性的判断。

class Solution {public:map<TreeNode*, int> m;int depth(TreeNode* rt){if(!rt) return 0;if(m.find(rt)!=m.end()) return m[rt];int L = depth(rt->left);int R = depth(rt->right);m[rt] = max(L,R)+1;return m[rt];}bool IsBalanced_Solution(TreeNode* pRoot) {if(!pRoot) return true;depth(pRoot);return abs(m[pRoot->left]-m[pRoot->right])<=1 && IsBalanced_Solution(pRoot->left) && IsBalanced_Solution(pRoot->right);}
};

判断objcet是否是map类型_57、递归+树的深度+map-二叉搜索树的平衡性相关推荐

  1. LeetCode 1382. 将二叉搜索树变平衡(中序遍历+二分递归)

    1. 题目 给你一棵二叉搜索树,请你返回一棵 平衡后 的二叉搜索树,新生成的树应该与原来的树有着相同的节点值. 如果一棵二叉搜索树中,每个节点的两棵子树高度差不超过 1 ,我们就称这棵二叉搜索树是 平 ...

  2. 【LeetCode笔记】538. 把二叉搜索树转换为累加树(Java、二叉搜索树、递归)

    文章目录 题目描述 思路 & 代码 更新版 题目描述 注意是二叉搜索树,可以找出顺序! 有点类似中序遍历 思路 & 代码 思路:当前结点 root 带着父值一直走到最右边,再一个个累加 ...

  3. c++判断二叉树是否为二叉搜索树_原创 | 好端端的数据结构,为什么叫它SB树呢?...

    点击上方蓝字,关注并星标,和我一起学技术. 大家好,今天给大家介绍一个很厉害的数据结构,它的名字就很厉害,叫SB树,业内大佬往往叫做傻叉树.这个真不是我框你们,而是它的英文缩写就叫SBT. SBT其实 ...

  4. [剑指offer]面试题第[68-1]题[Leedcode][JAVA][第235题][二叉搜索树的最近公共祖先][递归][BFS]

    [问题描述][第235题][二叉搜索树的最近公共祖先][简单] 给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先.百度百科中最近公共祖先的定义为:"对于有根树 T 的两个结点 p. ...

  5. 判断一棵树是否是二叉搜索树

    1.什么是二叉搜索树? 二叉搜索树:如果一棵树为空树,那么是二叉搜索树:如果左子树的所有节点都小于根节点,右子树所有节点都大于根节点,那么是二叉搜索树 2.那么怎么编码呢? 根据BST的定义,我们往往 ...

  6. [Leetcode][第95题][JAVA][不同的二叉搜索树 II][递归]

    [问题描述][中等] [解答思路] 1. 递归 复杂度 class Solution {public List<TreeNode> generateTrees(int n) {if (n ...

  7. 按照层次序列创建二叉树,并判断二叉树是否为二叉搜索树

    首先定义树节点的数据结构,如下: struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; }; 两个函数,用 ...

  8. [Leetcode][第98 450 700 701题][JAVA][二叉搜索树的合法性、增、删、查][递归][深度遍历]

    [二叉搜索树定义](BST) 二叉搜索树(Binary Search Tree,简称 BST)是一种很常用的的二叉树.它的定义是:一个二叉树中,任意节点的值要大于等于左子树所有节点的值,且要小于等于右 ...

  9. go 递归tree关系_Go实现一个二叉搜索树

    什么是二叉搜索树 二叉搜索树(binary search tree,BST[1])也叫排序的二叉树,根节点比左边子树的所有节点都大,比右边子树上的所有节点都小,如下图就是一个二叉搜索树: 要实现一个二 ...

最新文章

  1. react native native module
  2. 【转】Linux查看物理CPU个数、核数、逻辑CPU个数
  3. vc设置ani动画光标
  4. Linux下sed命令替换配置文件中某个变量的值(改变包含字符的一行的值)之二——只改变第一出现的那一行
  5. java redis 批量删除key_互联网大厂Java工程师面试指南——Redis篇
  6. python 常用模块函数_python函数和常用模块(三),Day5
  7. IIS7 设置 UrlRewrite
  8. 设置mysql acquisition_MYSQL 7*24 高可用环境的部署
  9. 使用Dockerfile为SpringBoot应用构建Docker镜像
  10. Linux管理员权限失败su Authentication failure
  11. WPF 语言格式化文本控件
  12. 下载win10镜像_安装配置win10虚拟机_获取win10产品密钥
  13. mysql 预处理stmt操作(写入数据库和从数据库中取出)
  14. oracle12c不使用cdb模式,Oracle 12c实现手工建库而非CDB及CDB创建的方法
  15. mysql char存汉子_char如何存储汉字
  16. 关于SQLの大题练习
  17. 如何终止forEach循环
  18. Java实现手机号码归属地
  19. qq 4 android,Android QQ HD v5.5.4 正式版发布
  20. numpy实现torch的topk方法

热门文章

  1. ORACLE RAC 11.2.0.4 for RHEL6.8 集群CRS异常导致集群命令无法使用
  2. 展望未来:使用 PostCSS 和 cssnext 书写 CSS
  3. unix amp; linux oralce用户 内存使用情况分析
  4. 中继器中继后怎么进入后台重新设置
  5. [扫盲] Salesforce.com: 业界云计算(Cloud Computing)的主要倡导者之一
  6. 在WPF中使用WinForm控件方法
  7. RK3288 手动设置电池电量
  8. android中获取图片、获取图片像素、处理像素等基础知识
  9. BZOJ1503 [NOI2004]郁闷的出纳员
  10. 自制精排 ePub 集、不定期更新(UPDATA-2015-8-2)