如何在Python中实现通用树?这有内置的数据结构吗?
如何在Python中实现通用树?这有内置的数据结构吗?
有人能举例说明二叉树和二叉搜索树的区别吗?
我一直在使用telegram_bot,并试图获得groupChat id发送通知到组聊天,但不知道我必须使用哪些方法。
为了获得聊天id,当机器人参与聊天时,我使用message.chat.id,但我必须使用它来获得组聊天id,无法找到/
这是算法理论中的一个简单问题。 它们之间的区别是,在一种情况下,你计算节点的数量,在另一种情况下,计算根节点和具体节点之间最短路径上的边的数量。 哪个是哪个?
为什么c++ STL不提供任何“树”容器,用什么代替最好?
我想将对象的层次结构存储为树,而不是使用树来增强性能……
我拥有从同一接口派生的服务。
public interface IService { }
public class ServiceA : IService { }
public class ServiceB : IService { }
public class ServiceC : IService { }
通常情况下,其他IoC容器如Unity允许你通过一些区分它们的Key来注册具体的实现。
在ASP。NET Core,我如何注册这些服务,并在运行时根据一些关键字解析它们?
我没有看到任何接受键或名称参数的Add Service方法,这些参数通常用于区分具体实现。
public void ConfigureServices(IServiceCollection services)
{
// How do I register services of the same interface?
}
public MyController:Controller
{
public void DoSomething(string key)
{
// How do I resolve the service by key?
}
}
工厂模式是这里唯一的选择吗?
Update1 在这篇文章中,我已经展示了当我们有多个具体实现时,如何使用工厂模式来获取服务实例。然而,这仍然不是一个完整的解决方案。当我调用_serviceProvider.GetService()方法时,我不能将数据注入构造函数。
举个例子:
public class ServiceA : IService
{
private string _efConnectionString;
ServiceA(string efconnectionString)
{
_efConnecttionString = efConnectionString;
}
}
public class ServiceB : IService
{
private string _mongoConnectionString;
public ServiceB(string mongoConnectionString)
{
_mongoConnectionString = mongoConnectionString;
}
}
public class ServiceC : IService
{
private string _someOtherConnectionString
public ServiceC(string someOtherConnectionString)
{
_someOtherConnectionString = someOtherConnectionString;
}
}
_serviceProvider.GetService()如何注入适当的连接字符串? 在Unity或任何其他IoC库中,我们可以在类型注册时做到这一点。我可以使用IOption,但是,这将要求我注入所有设置。我无法向服务中注入特定的连接字符串。
还要注意,我试图避免使用其他容器(包括Unity),因为这样我就必须注册其他所有东西(例如,控制器)与新容器以及。
此外,使用工厂模式创建服务实例是不利于DIP的,因为它增加了客户端在这里有详细信息的依赖项数量。
所以,我认为默认DI在ASP。NET Core缺少两样东西:
使用键注册实例的能力 在注册期间向构造函数注入静态数据的能力
Killswitchcollective.com网站2009年6月30日的旧文章有以下输入和输出
git co master
git merge [your_branch]
git push
upstream A-B-C-D-E A-B-C-D-E-F-G
\ ----> \
your branch C-D-E G
我感兴趣的是,你如何在终端中获得树状的提交视图,而不使用OS/X中的Gitk或Gitx。
如何在终端中获得树状提交视图?
在Java中是否有标准的Java库类来表示树?
具体来说,我需要表示以下内容:
任意节点上的子树可以有任意数量的子树 每个节点(根节点之后)及其子节点都有字符串值 我需要得到一个给定节点的所有子(某种类型的列表或字符串数组),它的字符串值(即。一个方法,将一个节点作为输入,并返回子节点的所有字符串值作为输出)
是否有任何可用的结构,或者我需要创建我自己的(如果是这样,实施建议将是伟大的)。
假设你有一个扁平的表,存储一个有序的树层次结构:
Id Name ParentId Order
1 'Node 1' 0 10
2 'Node 1.1' 1 10
3 'Node 2' 0 20
4 'Node 1.1.1' 2 10
5 'Node 2.1' 3 10
6 'Node 1.2' 1 20
这是一个图表,我们有[id] Name。根节点0是虚构的。
[0] ROOT / \ [1] Node 1 [3] Node 2 / \ \ [2] Node 1.1 [6] Node 1.2 [5] Node 2.1 / [4] Node 1.1.1
您将使用什么极简的方法将其输出到HTML(或文本,就此而言),作为一个正确有序、正确缩进的树?
进一步假设您只有基本的数据结构(数组和hashmap),没有带有父/子引用的花哨对象,没有ORM,没有框架,只有您的两只手。该表表示为一个结果集,可以随机访问。
伪代码或简单的英语是可以的,这纯粹是一个概念问题。
附加问题:在RDBMS中是否存在从根本上更好的方法来存储这样的树结构?
编辑和添加
回答一位评论者(Mark Bessey)的问题:根节点是不必要的,因为无论如何它都不会显示。ParentId = 0是表示“这些是顶级”的惯例。Order列定义了具有相同父节点的节点如何排序。
我所说的“结果集”可以被描绘成一个hashmap数组(继续使用这个术语)。因为我的例子本来就应该在那里。有些答案是额外的,首先构建它,但这没关系。
树可以任意深。每个节点可以有N个子节点。不过,我脑子里并没有“数百万条”树。
不要把我选择的节点命名(“节点1.1.1”)误认为是可以依赖的。节点也可以被称为“Frank”或“Bob”,没有隐含的命名结构,这只是为了让它更具可读性。
我已经发布了我自己的解决方案,所以你们可以把它拆成碎片。
当然,这是一个很有用的功能,但是有没有办法禁用它呢? 例如,如果表单是一个单一的文本字段,并且它旁边已经有一个“清除”按钮,那么再加上x是多余的。在这种情况下,最好删除它。
这能做到吗?如果可以,怎么做?