二进制搜索树python。迭代搜索

时间:2018-02-02 01:23:41

标签: python algorithm data-structures binary-search-tree

我想知道是否有人可以帮我看看我在二元搜索树的搜索功能上做错了什么。由于数据的大小,必须使用迭代版本。当我打印出调试值时,我一直陷入无限循环。谢谢!

我也遇到了这个错误:

foreach ( array(
    'member-title' => 'title_meta_field',
    'member-phone' => 'test_page_template_metabox2',
    'member-email' => 'test_page_template_metabox3',
) as $input_name => $meta_key ) {
    /* Get the posted data. */
    $input_value = isset( $_POST[ $input_name ] ) ? $_POST[ $input_name ] : '';

    /* Get the meta value of the custom field key. */
    $meta_value = get_post_meta( $post_id, $meta_key, true );

    /* If a new meta value was added and there was no previous value, add it. */
    if ( $input_value && '' == $meta_value )
        add_post_meta( $post_id, $meta_key, $input_value, true );

    /* If the new meta value does not match the old value, update it. */
    elseif ( $input_value && $input_value != $meta_value )
        update_post_meta( $post_id, $meta_key, $input_value );

    /* If there is no new meta value but an old value exists, delete it. */
    elseif ( '' == $input_value && $meta_value )
        delete_post_meta( $post_id, $meta_key, $meta_value );
}

2 个答案:

答案 0 :(得分:0)

在调用left之前,您需要声明rightNone不是.value

Python lazy evaluation表达式允许您在一行上执行此操作。 if word_search is None or word_search.value is None会评估word_search,如果是None,则不评估word_search.value

def iterative_word_search(current, user_input):

    word_search = current.root

    while True:
        if word_search is None or word_search.value is None:
            print("not found")
            break
        if word_search.value == user_input:
            print("found")
            break
        if(user_input < word_search.value):
            word_search = word_search.left
        elif(word_search.right != None):
            word_search = word_search.right

    return word_search 

答案 1 :(得分:0)

感谢您的帮助! 解决了这个问题。它处理用户输入和我读入的文件。 我读过的文件有一个&#39; \ N&#39;附在它上面。这就是为什么我不断收到多个错误并且没有搜索到这个词的原因。