我对Python和整个递归函数都很陌生,所以请原谅我的无知.
我试图在Python中实现二进制搜索树并具有以下插入方法(从类中取出):
def insert(self, key, root=None):
'''Inserts a node in the tree'''
if root == None:
root = self.root
if root.key == None:
self._update(root, key)
return 0
else:
tmp = root
if key > tmp.key: # we work with the right subtree
self.insert(key, root=tmp.right)
elif key < tmp.key: # we work with the left subtree
self.insert(key, root=tmp.left)
else: # key already exists
return 0
Run Code Online (Sandbox Code Playgroud)
我不确定这是否清晰,但是它会遍历树,直到它达到None值并使用要插入的键更新节点.
现在,该方法可以正常工作并从头开始正确创建BST.但是返回语句存在问题,因为如果没有执行递归,它只返回0.
>>> bst.insert(10)
0
>>> bst.insert(15)
>>> bst.root.right.key
15
>>>
Run Code Online (Sandbox Code Playgroud)
"插入"根键再次返回0(从第15行)它应该的方式.
>>> bst.insert(10)
0
Run Code Online (Sandbox Code Playgroud)
我无法弄清楚为什么会这样.如果我在第6行放置一个print语句,它会正确执行,但它不会在第一次插入后返回任何内容.为什么是这样?(我很确定我遗漏了一些关于Python和递归的基本信息) …
我正在评论回复(仅限一个级别)功能.所有评论都可以有多少回复,但没有回复可以进一步回复.
所以我的数据库表结构如下所示
Id ParentId Comment
1 0 this is come sample comment text
2 0 this is come sample comment text
3 0 this is come sample comment text
4 1 this is come sample comment text
5 0 this is come sample comment text
6 3 this is come sample comment text
7 1 this is come sample comment text
Run Code Online (Sandbox Code Playgroud)
在上述结构中,有1个(有2个回复)和3个(1个回复)有回复.因此,要获取注释及其回复,一个简单的方法是首先获取所有具有ParentId为0的注释,然后通过运行while循环获取该特定commentId的所有回复.但是,如果我在特定记录上有大约200条评论,那么这似乎会运行数百条查询.
所以我想创建一个查询,它将按顺序获取带有回复的注释,如下所示;
Id ParentId Comment
1 0 this is come sample comment text
4 1 this is come sample …Run Code Online (Sandbox Code Playgroud) 给定Windows注册表项的句柄,例如由:: RegOpenKeyEx()设置的句柄,是否可以确定该键的完整路径?
我意识到在一个简单的应用程序中,您只需要查看5行或10行并阅读...但是在我正在调试的复杂应用程序中,我感兴趣的键可以从一系列中打开电话.
我有一些非常简单的示例代码,如下所示:
$.ajax({
url: 'demo2.htm',
success: function(loadeddata){
$("#loaded_data").html(loadeddata);
alert('success');
},
error: function(){
alert('failure');
}
});
Run Code Online (Sandbox Code Playgroud)
加载的数据当前返回所有内容.我需要的是只获得一个特定的div并使其成为#loaded_data的html.
我怎么做?
谢谢!
编辑:
在尝试使用.load()时......
这是我在评论中写的内容.
谢谢,您的更新示例很棒.但是我不确定我的错是什么.
这个:有效
$("#loaded_data").load("demo2.htm #mydiv", function(text, status, request) {
if(status == 'success') {
alert('success');
} else {
alert('error');
}
});
Run Code Online (Sandbox Code Playgroud)
这个:
$("#loaded_data").load("demo5.htm #mydiv", function(text, status, request) {
if(status == 'success') {
alert('success');
} else {
alert('error');
}
});
Run Code Online (Sandbox Code Playgroud)
才不是.它只是挂起.没有demo5.htm但是没有返回错误.
再次感谢您的帮助.
我正在尝试实现类似于Stackoverflow上的"相关问题"的功能.
我如何编写SQL语句来搜索我的数据库的Title和Summary字段以寻找类似的问题?
如果我的问题是:"用于执行搜索的SQL是什么类似于Stackoverflow上的"相关问题".
我能想到的步骤是;
如果我这样做,我猜我不会得到任何有意义的结果.我不确定服务器上是否启用了全文搜索,所以我没有使用它.使用全文搜索会有优势吗?
我发现了一个类似的问题,但没有答案:类似的问题
使用SQL 2005
有没有办法修改OpenFileDialog的行为,以便它查看它打开的文件夹中的文件,然后根据其内容忽略某些文件?
一个例子是打开一个充满Zip文件的文件夹,但只显示包含某个文件的文件夹.
从文档中,有HookProc,但我不确定我是如何使用它的.
请注意,如果可能,我意识到这将是一个相对较慢的操作.目前我并不关心表现.
谢谢!
我在MSDN文档中注意到有多种方法可以在VB.NET程序中声明对外部DLL中函数的引用.
令人困惑的是,MSDN声称你只能在极少数情况下使用DllImportAttribute类和共享函数原型,但是我找不到这个语句的解释,而你可以简单地使用关键字.Declare
为什么这些不同,我会在哪里适当地使用每个案例?
我开始使用SQLServer数据库.所以我似乎应该使用System.Data.SqlClient命名空间.但是,我们有可能关闭我们的SqlServer数据库并转到MySql或Oracle.出于这个原因,我提出了一套关于我们的.Net应用程序如何与数据库通信的标准,以便在将来我们需要时更容易迁移到不同的数据库系统.
所以这是标准:
这让我想到了我的主要问题. 我应该使用哪个命名空间来编写DAL代码?
在我看来,选择是在System.Data.ODBC和之间System.Data.OleDB:
我正在使用这里的Splash Screen .我喜欢它有多简单.但问题是,在我点击之前,启动画面不会消失.在IDE中运行时,它可以正常工作.有任何想法吗?我在这里附上代码,但由于某种原因它没有正确插入.
private System.Windows.Forms.Timer timer1;
//private Splash sp=null;
public Form1()
{
InitializeComponent();
Thread th = new Thread(new ThreadStart(DoSplash));
//th.ApartmentState = ApartmentState.STA;
//th.IsBackground=true;
th.Start();
Thread.Sleep(3000);
th.Abort();
Thread.Sleep(1000);
}
private void DoSplash()
{
Splash sp = new Splash();
sp.ShowDialog();
}
private void timer1_Tick(object sender, System.EventArgs e)
{
// sp.Close();
}
Run Code Online (Sandbox Code Playgroud)