算法与数据结构——二叉树查找

二叉查找树,左边的子节点比父节点的数值小,右边的子节点比父节点的数值大
代码大体如下,有错误
node_list = [
    {'key': '60', 'left': '12', 'right': '90', 'is_root': True},
    {'key': '12', 'left': '4', 'right': '41', 'is_root': False},
    {'key': '4', 'left': '1', 'right': 'None', 'is_root': False},
    {'key': '1', 'left': 'None', 'right': 'None', 'is_root': False},
    {'key': '41', 'left': '29', 'right': 'None', 'is_root': False},
    {'key': '29', 'left': '23', 'right': '37', 'is_root': False},
    {'key': '23', 'left': 'None', 'right': 'None', 'is_root': False},
    {'key': '37', 'left': 'None', 'right': 'None', 'is_root': False},
    {'key': '90', 'left': '71', 'right': '100', 'is_root': False},
    {'key': '71', 'left': 'None', 'right': '84', 'is_root': False},
    {'key': '100', 'left': 'None', 'right': 'None', 'is_root': False},
    {'key': '84', 'left': 'None', 'right': 'None', 'is_root': False}
    ]

class Node:
    def __init__(self, key, left=None, right=None):
        self.data, self.right, self.left, = key, right, left
        
class Tree:
    def __init__(self, root=None):
        self.root = root
    def init_data(self, datas):
        node_dict = {}
        for d in datas:
            node = Node(d['key'], d['left'], d['right'])
            node_dict[d['key']] = node
        for d in datas:
            node = node_dict[d['key']]
            if node.left:
                node.left = node_dict[node.left]
            if node.right:
                node.right = node_dict[node.right]
            if d['is_root']:
                self.root = node
    def search(self, value):
        if self.root is None:
            return None
        elif self.root.key > value:
            self.root.left.key > value
if __name__ = "__main__":
    tree = Tree()
    tree.init_data(node_list)
    tree.search(66)
    


全部评论

相关推荐

点赞 评论 收藏
转发
头像
03-18 09:09
Java
点赞 评论 收藏
转发
点赞 收藏 评论
分享
牛客网
牛客企业服务