摘要: 解法一:递归 遇到叶子节点不递归,否则接着往子树递归,每次递归层数加1 要确定的是,一定要保证初始输入的节点是有子节点的。因为可能出现只有单子树的情况,所以要先确认这种情况。 具体过程: 1、分析初始条件 空指针:深度为0 单节点:深度为1 1、先确定递归基本条件: 节点指针为空,说明深度为0,返回 阅读全文
posted @ 2019-06-22 17:10 Austin_anheqiao 阅读(811) 评论(0) 推荐(0) 编辑
摘要: 求二叉树是否平衡,根据题目中的定义,高度平衡二叉树是每一个结点的两个子树的深度差不能超过1,那么我们肯定需要一个求各个点深度的函数,然后对每个节点的两个子树来比较深度差,时间复杂度为O(NlgN),代码如下: 上面的方法每个点计算深度的时候都会被访问一次,我们可以进行优化。方法是如果我们发现子树不平 阅读全文
posted @ 2019-06-22 15:51 Austin_anheqiao 阅读(163) 评论(0) 推荐(0) 编辑
摘要: 可以是空树。 性质: 任何父节点的左右子树深度差<=1; BF平衡因子=左子树深度-右子树深度,则所有节点平衡因子-1,0,1; 有些BST初始序列或者插入后对BST的影响,导致可能出现下面这种情况,将导致我们的二叉排序树的效率大大降低: 为了避免这种情况的发生,我们希望可以有一种算法,将我们的不平 阅读全文
posted @ 2019-06-22 15:12 Austin_anheqiao 阅读(318) 评论(0) 推荐(0) 编辑
摘要: 解题思路 我们回到这样的一种性质:对于一个二叉搜索树来说,它的中序遍历是一个有序数组。所以,这个问题的另一种表述就是:通过一颗二叉搜索树的中序遍历,推导出这颗二叉搜索树的形状。但是这样推导出来的二叉搜索树形状有很多,所以题目又限定了这样的条件高度平衡二叉搜索树,但是依旧会出现很多答案,但是没关系,我 阅读全文
posted @ 2019-06-22 14:44 Austin_anheqiao 阅读(204) 评论(0) 推荐(0) 编辑