class Solution { public: bool ans = true;; bool isBalanced(TreeNode* root) { if(!root) return true; maxDepth(root); return ans; } int maxDepth(TreeNod ...
分类:
其他好文 时间:
2020-02-21 00:02:46
阅读次数:
84
一、平衡二叉树的定义 1. 使树的高度在每次插入元素后仍然能保持O(logn)的级别 2. AVL仍然是一棵二叉查找树 3. 左右子树的高度之差是平衡因子,且值不超过1 二、平衡二叉树的基本操作 1. 查找操作 查找方法和二叉查找树一致 2. 插入操作 左旋(Left Rotation) 右旋(Ri ...
分类:
其他好文 时间:
2020-02-20 22:28:20
阅读次数:
83
1、基本概念 所谓自平衡二叉树,就是当我们插入或删除元素之后,二叉树的高度会自动调整到最小,这样我们就可以在对数时间内查找二叉树内的元素。 2、定义 TreeSet<Elemtype> set=TreeSet<>(); 3、基本函数 set.ceiling(x) // 取set中大于等于x的最小值, ...
分类:
编程语言 时间:
2020-02-14 22:53:08
阅读次数:
116
平衡二叉树是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树 平衡二叉树解决了二叉排序树的查询效率问题(连续递增数据创建二叉排序树时) 平衡二叉树的难点在于左右旋转,这里用 new 代表新节点 old 代表旧 '根' 节点 左旋转: 1)new.value = ...
分类:
其他好文 时间:
2020-02-14 16:47:42
阅读次数:
59
之前也没有系统的学过数据结构,但是平时用到的数组,链表等还是比较简单的,理解的时候即便没有接触过但是撸一撸源码,看一看画的图,基本上也就会了,树,二叉树,二叉搜索树,平衡二叉树,2-3树(完美平衡二叉树),红黑树。这次主要是在整理Java基本的数据类型Collection和Map子类的时候,发现要想 ...
分类:
其他好文 时间:
2020-02-07 22:36:41
阅读次数:
75
剑指OFFER 平衡二叉树 分析 先理解什么是平衡二叉树 它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。 下面的代码我只判断了根节点左右孩子的深度(没有再递归判断其子树的),但是也一样过了. 代码 ...
分类:
其他好文 时间:
2020-02-06 20:08:55
阅读次数:
58
红黑树是什么? 其实也是平衡二叉树,只是给每个节点标了红黑颜色 为什么需要红黑树? 红黑树其实基础还是二叉查找树,只是因为二叉查找树很容易出现不平衡的情况,最坏情况相当于O(n),红黑树和AVL树应运而生,AVL树的话,因为平衡度要求是[-1,1]太严格,所以插入和删除的时候的效率并不是很高,比不上 ...
分类:
其他好文 时间:
2020-02-06 01:13:39
阅读次数:
75
面试题55:二叉树的深度 题目描述 问题(1)二叉树的深度 输入一棵二叉树的根结点,求该树的深度。从根结点到叶结点依次经过的/结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。 问题(2)平衡二叉树 输入一棵二叉树的根结点,判断该树是不是平衡二叉树。如果某二叉树中任意结点的左右子树的深 ...
分类:
其他好文 时间:
2020-01-31 22:43:15
阅读次数:
72
二叉查找树(BST)具备什么特性呢?1.左子树上所有结点的值均小于或等于它的根结点的值。2.右子树上所有结点的值均大于或等于它的根结点的值。3.左、右子树也分别为二叉排序树。查找结点里面的值 的方式就是二分查找的思想 查找次数就是树的高度 二叉查找树可以任意地构造 向一方倾斜的二叉树是不平衡的,查询 ...
分类:
其他好文 时间:
2020-01-31 18:55:12
阅读次数:
121
思路分析: 二叉树的题第一反应是应用递归遍历。 判断一棵平衡二叉树的依据是:1.结点的左右子树的深度是平衡二叉树,2.左子树的深度与右子树的深度的差不超过1 若所有的结点都符合这两条件则该树是一平衡二叉树。 利用“与”实现遇到错返回false,全部正确才返回true(之前一直不懂,终于清楚了) ...
分类:
编程语言 时间:
2020-01-31 12:08:46
阅读次数:
58