Questions tagged «binary-tree»

树形数据结构,其中每个节点最多具有两个子节点。




30
如何在任何二叉树中找到两个节点的最低公共祖先?
这里的二叉树不一定是二叉搜索树。 该结构可以视为- struct node { int data; struct node *left; struct node *right; }; 我可以和一个朋友一起解决的最大解决方案就是这种情况- 考虑这个二叉树: 有序遍历收益-8,4,9,2,5,5,1,6,3,7 后订单遍历收益-8、9、4、5、2、6、7、3、1 因此,例如,如果我们要找到节点8和5的公共祖先,那么我们将列出在有序树遍历中8到5之间的所有节点的列表,在这种情况下碰巧是[4,9 ,2]。然后,我们检查此列表中的哪个节点在后遍历中最后出现,即2。因此,8和5的共同祖先是2。 我认为该算法的复杂度为O(n)(对于有序/后序遍历为O(n),其余步骤又为O(n),因为它们仅是数组中的简单迭代)。但是很有可能这是错误的。:-) 但这是一种非常粗糙的方法,我不确定在某些情况下它是否会崩溃。是否还有其他(可能是最佳的)解决方案?


28
如何打印二叉树图?
如何在Java中打印二叉树,使输出类似于: 4 / \ 2 5 我的节点: public class Node<A extends Comparable> { Node<A> left, right; A data; public Node(A data){ this.data = data; } }

12
二进制搜索树的定义中是否允许重复键?
我试图找到二叉搜索树的定义,并且在各处不断找到不同的定义。 有人说,对于任何给定的子树,左子键都小于或等于根。 有人说,对于任何给定的子树,正确的子键都大于或等于根。 我的大学数据结构旧书说“每个元素都有一个键,没有两个元素具有相同的键”。 bst是否有通用定义?特别是关于如何处理具有相同键的多个实例的树。 编辑:也许我不清楚,我看到的定义是 1)左<=根<右 2)左<根<=右 3)左<根<右,因此不存在重复的键。

8
在不使用堆栈或递归的情况下解释Morris有序树遍历
有人可以在不使用堆栈或递归的情况下帮助我了解以下Morris有序树遍历算法吗?我试图理解它是如何工作的,但是它只是在逃避我。 1. Initialize current as root 2. While current is not NULL If current does not have left child a. Print current’s data b. Go to the right, i.e., current = current->right Else a. In current's left subtree, make current the right child of the rightmost node b. Go to …

27
如何确定二叉树是否平衡?
那些学期已经有一段时间了。在一家医院担任IT专家的工作。现在尝试着做一些实际的编程。我现在正在研究二叉树,我想知道确定树是否高度平衡的最佳方法是什么。 我在想一些这样的事情: public boolean isBalanced(Node root){ if(root==null){ return true; //tree is empty } else{ int lh = root.left.height(); int rh = root.right.height(); if(lh - rh > 1 || rh - lh > 1){ return false; } } return true; } 这是一个好的实现吗?还是我错过了什么?

30
以最佳方式在二进制搜索树中找到第k个最小元素
我需要在二进制搜索树中找到第k个最小的元素,而无需使用任何静态/全局变量。如何有效实现?我想到的解决方案是在O(n)中进行操作,这是最糟糕的情况,因为我计划对整个树进行有序遍历。但在内心深处,我觉得我没有在这里使用BST属性。我的假设解决方案正确还是有更好的解决方案?


5
何时使用预排序,后排序和有序二进制搜索树遍历策略
我最近才意识到,虽然我一生都在使用BST,但我什至从未考虑过使用除顺序遍历之外的任何方法(虽然我知道并且知道使程序适应使用前/后遍历是多么容易)。 意识到这一点后,我抽出了一些旧的数据结构教科书,并寻找了在顺序遍历和后序遍历的有用性背后的原因-尽管它们并没有说太多。 什么时候实际使用预购/后购的一些示例?什么时候比有秩序更有意义?

7
大O(logn)日志是e吗?
对于二进制搜索树类型的数据结构,我看到Big O标记通常记为O(logn)。在日志中使用小写的“ l”,这是否意味着以自然对数描述的对数为e(n)?很抱歉这个简单的问题,但是我一直很难区分不同的隐式对数。



By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.