标签: binary-tree

树数据结构

我试图理解排序树是什么,二叉树和avl和和......我还是不确定,是什么使排序树排序?在排序中搜索和在未排序树中搜索之间的复杂性(Big-Oh)是多少?希望您能够帮助我.

sorting tree binary-tree

0
推荐指数
1
解决办法
966
查看次数

返回二叉树中最短分支长度的算法

可以使用两个函数l和r对二叉树进行编码,使得对于节点n,l(n)给出n的左子节点,r(n)给出n的右子节点.

树的分支是从根到叶的路径,分支到特定叶的长度是从根到该叶的路径上的弧的数量.

设MinBranch(l,r,x)是一个简单的递归算法,用于将由l和r函数编码的二叉树与用于二叉树的根节点x一起,并返回二叉树的最短分支.

请提供此算法的伪代码.

algorithm binary-tree pseudocode

0
推荐指数
1
解决办法
2974
查看次数

遍历任意大的二叉树

我一直在寻找解决方案.C#,.NET 4.0,VS2010

我可以很容易地编写一个递归的,但是对于我的生活来说,如果树是任意大的,就不能找出不会溢出堆栈的东西.

这是一个二叉树问题,我正在尝试写一个

public IEnumerable<T> Values()
Run Code Online (Sandbox Code Playgroud)

方法.

以下是您感兴趣的完整代码:http://pastebin.com/xr2f3y7g

显然,目前在那里的版本不起作用.我可能应该提到我是C#的新手,从C++过渡.

.net c# binary-tree visual-studio-2010

0
推荐指数
1
解决办法
2238
查看次数

这个递归函数如何工作?

我无法弄清楚这是如何工作的,在我看来,一旦得到答案,它就不会对它做任何事情.

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)

c++ recursion binary-tree

0
推荐指数
1
解决办法
350
查看次数

选择第i个最小数量的分隔数字序列的最佳方法

如果我给了一组特定的数字(我将它存储在平衡的二进制搜索树中以方便),那么我想回答一个查询,要求我告知[A,B]之间的第i个最小数字是什么是一个执行该任务的快速算法?

从技术上讲,我可以从根遍历搜索A的树(或者一个数字,如果A不存在则立即大于该数字),而不是回溯搜索B(或小于B的数字),并且在这样做时我可以保留一个计数器我,确定我什么时候会在第i个号码.但这对我来说似乎不是最佳选择.

我可以在O(log n),我用来存储通用数字集的树的高度上执行此操作吗?

谢谢

algorithm optimization big-o search binary-tree

0
推荐指数
1
解决办法
518
查看次数

制作二叉搜索树会引发异常

其他人说,制作带有数组的二进制搜索树{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);

java binary-tree

0
推荐指数
1
解决办法
279
查看次数

Python:构建树

我正在努力建造一棵树.我乞求下一段代码:

>>> 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.非常感谢你的帮助.

python binary-tree

0
推荐指数
1
解决办法
580
查看次数

为什么这种方法计算二叉树的总和不起作用?

我知道这段代码应该有效,但事实并非如此.有谁知道我错过了什么?我试图获得二叉树中所有节点的总和.

public int getSum() {
    if (this == null) {
        return 0;
    } else {
        return this.value + right.getSum() + left.getSum();
    }
}
Run Code Online (Sandbox Code Playgroud)

java binary-tree sum

0
推荐指数
1
解决办法
109
查看次数

二叉树的最小元素

我已经实现了函数来查找二叉树的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)

函数查找二叉树的最小值. …

binary-tree max min

0
推荐指数
1
解决办法
2万
查看次数

检查Scala中是否平衡了二叉树

我在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)

binary-tree scala

0
推荐指数
1
解决办法
353
查看次数