binary-tree相关内容

找到一个二元堆的最后一个元素

引用维基百科:的 这是完全可以接受的使用 传统的二进制树数据结构 为实现二进制数堆。有 一个问题,寻找相邻 就在最后一个级别的元素 添加元素时,二叉堆 它可以是的解决的 *算法* ... 如何这样的算法可能会奏效任何想法? 我没能找到有关此问题的任何信息,对于大多数二进制堆使用数组实现的。 任何帮助AP preciated。 最近,我已经注册了一个OpenID帐户,我不能够编辑我最初 ..
发布时间:2015-11-30 14:57:23 C/C++

寻找二叉树的最大深度没有递归

递归机制来找到二进制树的深度最大深度是非常简单的,但如何才能有效地做到这一点没有递归,因为我有棵大树,我宁愿避免这种递归。 //递归机制,我想更换非递归 私有静态诠释MAXDEPTH(节点node){ 如果(节点== NULL)返回0; 返回1 + Math.max(MAXDEPTH(node.left),MAXDEPTH(node.right)); } PS:我要寻找一个在 ..
发布时间:2015-11-30 14:54:04 Java开发

二叉树的曲折方式打印级别序遍历

予有使用水平序遍历但在不同的电平螺旋形即节点应印在螺旋形式来打印的二进制树的节点 有关,例如:如果树是这样的: 输出应该是10 10 20 25 15 6 4。 我使用的算法很简单,就是一级序遍历的只是一个小的变化。我只是把p.if变量的变量等于1比在给定的水平左向右打印顺序,如果是-1打印从右到左。 无效getlevel(结构节点*根,整数N,INT P) { 如果( ..
发布时间:2015-11-30 14:52:09 C/C++

二叉树的直径 - 更好的设计

我已经写了code查找二叉树的直径。 需要进行如下的建议: 在我能做到这一点,而不使用静态变量的类层次? 是算法精/有什么建议? 公共类DiameterOfTree { 公共静态INT直径= 0; 公共静态INT getDiameter(BinaryTreeNode根){ 如果(根!= NULL){ INT leftCount = getDiameter(root.g ..
发布时间:2015-11-30 14:50:38 Java开发

一个最大堆转换为二叉搜索树

我们给出的2 M 的阵列 - 1不同的,比较的元素,从1开始索引 我们可以查看阵列作为一个完全二叉树: 节点放置在索引i。 左子放置在2I。 右子放在2I + 1。 有关例如,该阵列 [7 6 4 5 2 3 1] 是树 7 / \ 6 4 / \ / \ 5 2 3 1 现在作为一个二叉树查看时,这些元素满足堆属性,一个节点大于它的两个 ..
发布时间:2015-11-30 14:49:32 C/C++

最有效的方法来测试两个二叉树是否相等

您如何在Java中实现二进制树节点类和二叉树类,以支持最有效(从运行时间上来看)等于检查方法(也必须实现): 布尔等于(节点< T> root1下,节点< T> root2){} 或 布尔等于(树T1,T2树){} 首先,我创建了Node类,如下所示: 公共类节点< T> { 私人节点< T>剩下; ..
发布时间:2015-11-30 14:45:09 Java开发

转换一个二叉树链表,广度优先,不断的存储/破坏性

这是不做作业,我不需要回答这个问题,但现在我已经成为痴迷:) 现在的问题是: 在设计一个算法,用来破坏性压扁一个二叉树链表,广度优先。好吧,很容易。只需建立一个队列,做你不得不这样做。 这是热身。现在,随着不断的存储实现它(递归,如果你可以用它找出一个答案,是对数的存储,而不是常量)。 我找到了一个解决方案,以大约一年回在互联网上这个问题,但现在我已经忘记了,我想知道:) 诀窍,只要我还记 ..
发布时间:2015-11-30 14:44:18 C/C++

如果找到一个二叉树是一个二叉搜索树

今天,我有一个采访,我被要求写一个程序,它接受一个二叉树,并返回true,如果它也是一个二叉搜索树,否则为false。 我的Approach1:执行inroder遍历和存储元件O(n)时间。现在通过元素的数组/列表扫描和我检查元素日指数大于元素在第(i + 1)日指数。如果遇到这种情况,返回false,打破循环。 (这需要O(n)的时间)。在结束返回true。 不过,这位先生要我提供了一个有效 ..
发布时间:2015-11-30 14:42:37 C/C++

定二叉查找树和一个数,查找其节点的数据添加到被给定数的路径。

给定的二进制搜索树和一个数,发现如果存在来自根的路径的片,使得所述路径上的所有数字加起来为给定数。 我知道如何通过递归地做到这一点。但是,我preFER迭代求解。 如果我们从根每次迭代到叶,会有重叠,因为一些路径可具有重叠。 如果树是不是二进制搜索? 感谢 解决方案 基本上,这个问题可以通过在树动态规划,以避免那些重叠的路径来解决。 的基本思想是跟踪的可能长度从每个叶给定节点中的表 ..
发布时间:2015-11-30 14:39:36 C/C++开发

打印树垂直

要了解什么是同一垂直线上,我们需要先定义的水平距离。如果两个节点具有相同的水平距离(HD),那么它们就同一垂直线上。高清的想法很简单。 HD为根是0,一个右边缘(边连接到右子树)被认为是1的水平距离和一个左边缘被认为是-1水平距离。例如,在下面的树,高清对于节点4是在-2,高清为节点2为-1,高清为5和6是0和HD为节点7是2 例如: 1 / \ 2 3 / \ / \ ..
发布时间:2015-11-30 14:29:01 C/C++

如何BST使用{pre,在,后期}为了遍历结果重建

我们知道pre-顺序,按顺序和后序遍历。什么算法将重建BST? 解决方案 由于它是BST,有序可以从 $ P排序$ P级或后序< 1>。其实,无论是 pre级或后序时,才需要...... < 1>如果您知道的比较函数是什么 在 pre级和有序,构造一个二叉树 BT createBT(INT * preOrder,为int *序,INT LEN) { INT I; ..
发布时间:2015-11-30 14:22:42 C/C++

查找树是否是其他的子树

有两个二进制树T1和T2用来存储字符数据,允许重复。 我如何才能找到T2是否是T1的子树? 。照片 T1拥有数以百万计的节点和T2拥有上百个节点。 解决方案 导线T1。如果当前节点是等于T2的根节点,同时遍历两者树木(T2和T1的当前子树)的。比较当前节点。如果它们总是相等,T2为T1的一个子树。 ..
发布时间:2015-11-30 14:19:13 C/C++

印刷BFS(二进制树)的等级秩序与_specific formatting_

首先,这个问题是不是this 之一,但建立就可以了。 以树中这个问题作为一个例子, 1 / \ 2 3 / / \ 4 5 6 你将如何改变你的程序将其打印出来的话, 1 2 3 4 5 6 而不是一般 1 2 3 4 五 6 我基本上找的最有效的方式做到这一点的直觉 - 我有涉及追加结果到一个列表,然后通过它循环的方法。一种更有效的方法可能是存储 ..
发布时间:2015-11-30 14:17:47 Python

B树不是AVL或RedBlack树快?

我知道性能永不是黑色和白色,往往一个实施更快的情况下的X和较慢的情况下Y,等,但在一般的 - 是B树更快然后AVL或RedBlack-树?他们是相当复杂实现再AVL树(甚至RedBlack树?),但他们的更快的(不其复杂性回报)? 编辑:我还要补充一点,如果他们更快则相当于AVL / RedBlack树(按节点/含量) - 为什么的是他们更快? 解决方案 肖恩的岗位(目前公认的一种)是完全的 ..
发布时间:2015-11-30 14:11:44 C/C++

使用preorder和序串检查子树

这本书我读的权利要求的一个方法来检查二叉树 B 是二进制树的树 A 是构建序和 preorder 的字符串(即重新present字符串序和$每棵树的对$ porder遍历)这两个目录树,并检查是否 inorder_B 是 inorder_A 的子和 preorder_B 是 preorder_A 的子字符串。请注意,它声称,你必须检查两个中序和 preorder字符串。子字符串匹配 难道真的有必 ..
发布时间:2015-11-30 14:08:55 C/C++

确定是否二叉树是使用pre-秩序和有序的字符串的另一个二叉树子树

我想找出二叉树T2是否二叉树T1的子树。我读使用pre-秩序和有序遍历人们可以打造字符串重新presentations为T1和T2,如果T2字符串是T1串子,T2是T1的子树。 我有点困惑这个方法并不能确定它的正确性。 从维基:“一树T A子树是由在T和所有的T中的后代节点的树” 在下面的例子: T2: 1 / \ 2 3 T1: 1 / \ 2 3 \ ..
发布时间:2015-11-30 14:03:11 C/C++

如何实现一个二叉树在Python

这是一个可以用来实现二叉树在Python最佳的数据结构? 解决方案 这是我的简单的递归实现二叉树。 #!的/ usr / bin中/蟒蛇 类节点: 高清__init __(个体经营,VAL): self.l =无 self.r =无 self.v = VAL 一流的树: 高清__init __(个体经营): ..
发布时间:2015-11-30 13:57:27 Python

为什么要使用二进制搜索,如果有三元搜索?

我最近听说三元的搜索中,我们把数组分为3份,并进行比较。这里将有两个比较,但它减少了阵列到n / 3。为什么没有人用这个钱? 解决方案 其实,人们用k元树任意ķ。 这是,然而,一个折衷。 要找到一个k元树中的元素,你周围的K * LN需要(N)/ LN(k)的操作(请记住变化基的配方)。你的K是较大的,则需要更多的整体运营。 对你说的话的合乎逻辑的延伸就是“为什么没有人用N叉树N个数据元 ..
发布时间:2015-11-30 13:57:25 C/C++