简体   繁体   English

如何在二叉搜索树中添加节点

[英]how to add a node in a binary search tree

I have this 2 function - 1st is creating a node , 2nd is a recursion function that goes through the tree in order to find a placement for a value: 我有这个2函数-第一个是创建节点,第二个是遍历树以查找值放置的递归函数:

def create_node(number=None):
    return {"Number": number, "Right": None, "Left":None}

def insert(number, pointer):
    pointer_number=pointer["number"]

    if pointer_number is none:
        pointer["number"]=number

    elif number > pointer_number:
        if pointer["right"] is none:
            pointer["right"] = create_node(number)
        else:
            insert(number, pointer["right"])
    else:
        if pointer["left"] is none:
            pointer["left"] = create_node(number)
        else:
            insert (number, pointer["left"]) 

Now I've created the root of the tree: 现在,我创建了树的根:

root = create_node(5)

The problem i face is when i try to add a value to the tree using the insert function. 我面临的问题是当我尝试使用插入功能将值添加到树中时。 I'm missing something and I don't know how to do it. 我缺少了一些东西,但我不知道该怎么做。 Please advise .. 请指教 ..

So 2 things 所以两件事

  • NoneType is capitalized: None (all if's you do in create_node ) NoneType大写: None (如果您在create_node所做的所有操作)
  • Python string comparison is casesensitive, so when you check for pointer["number"] value you are not really checking the one you set in the create_node method, which it's key is "Number" (capital "N"), being the reason it throws KeyError . Python字符串比较区分大小写,因此,当您检查pointer["number"]值时,实际上并没有检查在create_node方法中设置的值,它的关键是"Number" (大写“ N”),这就是它的原因。抛出KeyError Same for "right" and "left" . "right""left"

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM