我试图理解排序树是什么,二叉树和avl和和......我还是不确定,是什么使排序树排序?在排序中搜索和在未排序树中搜索之间的复杂性(Big-Oh)是多少?希望您能够帮助我.
可以使用两个函数l和r对二叉树进行编码,使得对于节点n,l(n)给出n的左子节点,r(n)给出n的右子节点.
树的分支是从根到叶的路径,分支到特定叶的长度是从根到该叶的路径上的弧的数量.
设MinBranch(l,r,x)是一个简单的递归算法,用于将由l和r函数编码的二叉树与用于二叉树的根节点x一起,并返回二叉树的最短分支.
请提供此算法的伪代码.
我一直在寻找解决方案.C#,.NET 4.0,VS2010
我可以很容易地编写一个递归的,但是对于我的生活来说,如果树是任意大的,就不能找出不会溢出堆栈的东西.
这是一个二叉树问题,我正在尝试写一个
public IEnumerable<T> Values()
Run Code Online (Sandbox Code Playgroud)
方法.
以下是您感兴趣的完整代码:http://pastebin.com/xr2f3y7g
显然,目前在那里的版本不起作用.我可能应该提到我是C#的新手,从C++过渡.
我无法弄清楚这是如何工作的,在我看来,一旦得到答案,它就不会对它做任何事情.
Node* FindNode(Node *rootNode, int data)
{
if (!rootNode)
return NULL;
else
{
if (rootNode->data == data)
return rootNode;
else
{
FindNode(rootNode->left, data);
FindNode(rootNode->right, data);
}
}
}
Run Code Online (Sandbox Code Playgroud) 如果我给了一组特定的数字(我将它存储在平衡的二进制搜索树中以方便),那么我想回答一个查询,要求我告知[A,B]之间的第i个最小数字是什么是一个执行该任务的快速算法?
从技术上讲,我可以从根遍历搜索A的树(或者一个数字,如果A不存在则立即大于该数字),而不是回溯搜索B(或小于B的数字),并且在这样做时我可以保留一个计数器我,确定我什么时候会在第i个号码.但这对我来说似乎不是最佳选择.
我可以在O(log n),我用来存储通用数字集的树的高度上执行此操作吗?
谢谢
其他人说,制作带有数组的二进制搜索树{3,7,1,90,45,67,54,23,...}是很好的.但是TreeSet我的代码会引发异常,我不知道为什么?我的数组列表"array"包含100 objects每个对象都有two fields 1)digit 2)name,我想BST用这些对象的数字字段.请帮助我谢谢.
TreeSet<Element> set = null;
set = new TreeSet<Element>();
for(Element e :array){
set.add(e);
}
Iterator it1 = set.iterator();
while (it1.hasNext()) {
Object o1 = it1.next();
System.out.println(o1);
}
Run Code Online (Sandbox Code Playgroud)
例外:
Exception in thread "main" java.lang.ClassCastException: OBST.Element cannot be cast to java.lang.Comparable
at java.util.TreeMap.put(TreeMap.java:542)
at java.util.TreeSet.add(TreeSet.java:238)
at OBST.GreedyVersion.<init>(GreedyVersion.java:25)
at OBST.GreedyVersion.main(GreedyVersion.java:66)
Run Code Online (Sandbox Code Playgroud)
这是因为线: set.add(e);
我正在努力建造一棵树.我乞求下一段代码:
>>> class tree:
def __init__(self, charge, left=None, right=None):
self.charge = charge
self.left = left
self.right = right
>>> class tree:
def __str__(self):
return str(self.charge)
Run Code Online (Sandbox Code Playgroud)
写完之后我写了下一篇
>>> left = tree(2)
Run Code Online (Sandbox Code Playgroud)
我这样写是因为我应该按照我使用的手册进行教学.但是我收到此错误:
Traceback (most recent call last):
File "<pyshell#23>", line 1, in <module>
left = tree(2)
TypeError: this constructor takes no arguments
Run Code Online (Sandbox Code Playgroud)
如何使用从下到上的开始代码构建一棵树?顺便说一句,我的python版本是2.7.2.非常感谢你的帮助.
我知道这段代码应该有效,但事实并非如此.有谁知道我错过了什么?我试图获得二叉树中所有节点的总和.
public int getSum() {
if (this == null) {
return 0;
} else {
return this.value + right.getSum() + left.getSum();
}
}
Run Code Online (Sandbox Code Playgroud) 我已经实现了函数来查找二叉树的max和min元素.但我得到了错误的输出.
函数查找二叉树的最大值.
int FindMax(struct TreeNode *bt)
{
//get the maximum value of the binary tree...
int max;
//get the maximum of the left sub-tree.
int left;
//get the maximum of the right sub-tree.
int right;
//get the root of the current node.
int root;
if(bt!=NULL)
{
root=bt->data;
//Call the left tree recursively....
left=FindMax(bt->leftChild);
//Call the right tree recursively...
right=FindMax(bt->rightChild);
if(left > right)
{
max=left;
}
else
{
max=right;
}
if(max < root)
{
max=root;
}
}
return max;
}
Run Code Online (Sandbox Code Playgroud)
函数查找二叉树的最小值. …
我在Scala中使用case类和trait定义了一个二叉树结构.我这样做了:
sealed trait Tree[+T]
case class Node[A](v: A, l: Tree[A], r: Tree[A]) extends Tree[A]
case class Leaf[A](v: A) extends Tree[A]
case object Empty extends Tree[Nothing]
Run Code Online (Sandbox Code Playgroud)
如果给定一个Tree实例,我想检查实例是否平衡,其中balance的定义是右边元素的数量等于左边元素的数量.
我尝试了以下方法(使用累加器模式)来获得我想要的东西:
sealed trait Tree[+T]
case class Node[A](v: A, l: Tree[A], r: Tree[A]) extends Tree[A]
case class Leaf[A](v: A) extends Tree[A]
case object Empty extends Tree[Nothing]
def isBalanced[A](tree: Tree[A]) = {
def inner(tree: Tree[A], acc: (Int, Int)): Boolean = tree match {
case n: Node[A] => inner(n.l, (acc._1 + 1, acc._2)) && inner(n.r, (acc._1, acc._2 …Run Code Online (Sandbox Code Playgroud)