这道题本质上还是考查二元树的遍历
如果一棵树只有一个结点,它的深度为1。如果根结点只有左子树而没有右子树,那么树的深度应该是其左子树的深度加1;同样如果根结点只有右子树而没有左子树,那么树的深度应该是其右子树的深度加1。如果既有右子树又有左子树呢?那该树的深度就是其左、右子树深度的较大值再加1。
上面的这个思路用递归的方法很容易实现,只需要对遍历的代码稍作修改即可
参考资料:...
分类:
其他好文 时间:
2014-08-02 10:03:03
阅读次数:
184
题目描述:
输入一个二叉树,输出其镜像。
九度OJ的测试很蛋疼啊~
这里,我先写一个求二叉树镜像的代码,使用自己的测试代码:
思路很简单:先判断是否左右孩子都为空,如果不是,则交换,然后递归左右子树。其实是先序遍历。
/*
二叉树镜像
by Rowandjj
2014/8/1
*/
#include
using namespace std;
typedef str...
分类:
其他好文 时间:
2014-08-01 19:47:22
阅读次数:
266
二叉排序数或者是一棵空树,或者是一棵具有以下性质的二叉树:(1)若它有左子树,则左子树上所有结点的数据均小于根结点的数据。(2)若它有右子树,则右子树上所有结点的数据均大于根结点的数据。(3)左、右子树本身又各是一棵二叉排序树。这样,在查找的时候,从根节点开始,若查找的元素小于根节点则查找其左子树,...
分类:
其他好文 时间:
2014-07-22 23:29:37
阅读次数:
367
RB-tree(红黑树)
--------------------------------------------------------------------------
平衡二叉搜索树 --> 平衡可提高搜索效率
常见的平衡二叉搜索树有:
AVL-tree(任何节点的左右子树高度相差最多 1)、红黑树、AA-tree
AVL-tree
破坏平衡的情况及恢复平衡的方法
恢复时要先找到失去平衡的点
外侧插入 --> 单旋转
内侧插入 --> 双旋转
图5-10
图5-11
图5-12
红黑树是...
分类:
其他好文 时间:
2014-07-22 22:34:33
阅读次数:
316
平衡二叉树(Balanced binary tree)是由阿德尔森-维尔斯和兰迪斯(Adelson-Velskii
and Landis)于1962年首先提出的,所以又称为AVL树。
定义:平衡二叉树或为空树,或为如下性质的二叉排序树:
(1)左右子树深度之差的绝对值不超过1;
(2)左右子树仍然为平衡二叉树.
平衡因子BF=左子树深度-右子树深度....
分类:
其他好文 时间:
2014-07-22 00:08:33
阅读次数:
257
问题
用递归方式遍历二叉树
思路说明
遍历二叉树的方法有广度优先和深度优先两类,下面阐述的是深度优先。
以下图的二叉树为例:
先定义三个符号标记:
访问结点本身(N)遍历该结点的左子树(L)遍历该结点的右子树(R)
有四种方式:
前序遍历(PreorderTraversal,NLR):先访问根结点,然后遍历其左右子树中序遍历(InorderT...
分类:
其他好文 时间:
2014-07-14 14:06:12
阅读次数:
217
题目:输入一棵二叉树的根结点,判断该树是不是平衡二叉树。如果某二叉树中任意结点的左右子树的深度相差不超过1,那么它就是一棵平衡二叉树。
注:这里不考虑该二叉树是否是二叉排序树
解决要点:
1.后序遍历二叉树;
2.递归。
核心算法:
bool isBalanced(pTree pT,int *depth)
{
if(!pT)//参数判断
{
*d...
分类:
其他好文 时间:
2014-07-13 18:58:22
阅读次数:
239
概念:
1.二叉树深度:树中结点的最大层次称为树的深度或高度。
2.二叉树层次:从根开始定义起,根为第一层,根的孩子为第二层,以此类推。
要点:
1.递归。
2.二叉树深度为左右子树深度较大值+1。
代码:
/*
求二叉树深度
by Rowandjj
2014/7/13
-------------------------------
题目描述:
输入一...
分类:
其他好文 时间:
2014-07-13 18:15:34
阅读次数:
347
二叉排序树:
二叉排序树(Binary Sort Tree)又称二叉查找树(Binary Search Tree),亦称二叉搜索树。 它或者是一棵空树;或者是具有下列性质的二叉树:
(1)若左子树不空,则左子树上所有结点的值均小于它的根结点的值;
(2)若右子树不空,则右子树上所有结点的值均大于它的根结点的值; (3)左、右子树也分别为二叉排序树;
注:中序遍历一棵二叉排序...
分类:
其他好文 时间:
2014-07-12 19:35:08
阅读次数:
249
1.二叉排序树的概念:二叉排序树是一种动态树表。 二叉排序树的定义:二叉排序树或者是一棵空树, 或者是一棵具有例如以下性质的二叉树: ⑴ 若它的左子树非空,则左子树上全部结点的值均小于根结点的值; ⑵ 若它的右子树非空,则右子树上全部结点的值均大于根结点的值; ⑶ 左、右子树本身又各是一棵二叉排序树...
分类:
其他好文 时间:
2014-07-11 11:26:27
阅读次数:
159