利用递归来求一棵树的高度,基本思想是:对于每一个非空节点,先求取其左子树的高度,然后求取其右子树的高度,最后取两子树中较高的一个加1作为以该节点为根的树的高度;对于空节点,直接返回0就可以了。求整棵树的高度只需将此思想运用到根节点上即可。struct BST_Node
{
int m_value;
BST_Node* left_child;
BST_Node* rigth_c...
分类:
其他好文 时间:
2015-02-07 09:07:54
阅读次数:
260
题目:EPI
书上的代码我认为有错。我的代码如下所示,时间复杂度为O(h),h为二叉树的高度。
//该函数不允许r和s为nullptr,且要求r、m、s三个指针互不相等
bool is_r_s_descendant_and_ancestor(shared_ptr r, shared_ptr m, shared_ptr s)
{
if (m == nullptr || r == nul...
分类:
其他好文 时间:
2015-01-18 14:27:37
阅读次数:
265
前言 通过之前对二叉查找树的讨论,我们知道在给定节点数目的情况下,二叉树的高度越低,查找所用时间也就越短. 在讨论红黑树的时候,我们说过红黑树并非完全"平衡"的二叉树,只是近似"平衡".那么这个平衡到底指的是什么呢?有没有完全"平衡"的二叉树?平衡二叉树 什么样的二叉树能被形容为平衡二叉树呢?...
分类:
其他好文 时间:
2014-12-19 21:54:20
阅读次数:
219
腾讯笔试的范围还真是广,很多知识都是完全不记得。首先是不定项的选择题,惊呆了,怎么能学高考物理选择题,这不科学。 二叉树的知识,二叉树的高度计算,二叉树的先序,中序,后序遍历等,这个知识多少还有一些。 哈弗曼编码的知识,这个知识记忆的不多,不过后来想起来了哈弗曼树的构造,但是想不到如何编码了,我.....
分类:
其他好文 时间:
2014-11-25 18:21:11
阅读次数:
220
问题:从上到下打印二叉树的每一行分析:先搜出二叉树的高度,然后遍历高度,每次搜索一个高度class Solution {public: int dfs(TreeNode *root) { if(root==NULL) return 0; if(root->le...
分类:
其他好文 时间:
2014-08-06 21:53:32
阅读次数:
278
给定一棵二叉树, 如何确定这棵二叉树的高度(即树的最大的深度), 是一个很常见的问题。
给下图回顾一下:
关于高度和深度的概念, 参见上图。
NOTE: 高度: 参考节点是距离节点最远的叶子
深度: 参考节点是根节点
寻找二叉树的高度也可以通过一个递归函数(a recursive function)实现, 这依然源于树是一个递归的数据结构。
例如, 对于下图, 我们可以求出根...
分类:
编程语言 时间:
2014-07-21 09:18:35
阅读次数:
344
基本概念结点的层次(Level)从根开始定义,根为第一层,根的孩子为第二层。二叉树的高度:树中结点的最大层次称为树的深度(Depth)或高度。二叉树在计算机科学中,二叉树是每个结点最多有两个子树的有序树。通常子树的根被称作“左子树”(left subtree)和“右子树”(right subtree...
分类:
其他好文 时间:
2014-07-13 23:45:49
阅读次数:
284
查找分为静态查找与动态查找一、静态查找1.顺序查找法平均的查找长度为(n+1)/22.折半查找法局限是数据必须是有序的。完全二叉树的高度为logn上取整。3.分块查找法查找第一阶段:每一块的查找利用折半查找法第二阶段:每一块内部的查找使用顺序查找法。二、动态查找B-树与B+树主要用于大规模数据的查找...
分类:
其他好文 时间:
2014-06-11 07:26:46
阅读次数:
239
1.二叉树的结点计算1)在二叉树的第i层上至多有2i-1个结点
提示:可以用归纳法,假若第i层有至多2i-1个结点,那么第i+1层至多就有2*2i-1个结点。2)深度为k的二叉树至多有2^k -1个结点。
提示:考虑满二叉树的情况,所有结点求和。3)有n个结点的完全二叉树的高度为 提示:结合2),n...
分类:
其他好文 时间:
2014-06-05 14:28:24
阅读次数:
274
题目:
Given a sorted (increasing order) array, write an algorithm to create a binary tree with minimal height.
翻译:
给定一个有序数组(递增),写程序构建一棵具有最小高度的二叉树。
思路:
要使二叉树的高度最小,则要尽量使其左右子树的节点数目相当,自然就考虑到将其构造成为二叉排序树,且将有序数组的中间大的数作为根节点,这样得到的二叉树的高度便是最小的。...
分类:
其他好文 时间:
2014-05-01 17:48:45
阅读次数:
321