算法设计题用python设计一个算法二叉树

img

根据课程空间第六章数据抽象的内容,排序二叉树是比较容易进行检索的一种数据储存结构,例如下图是将英文字母按序储存在二叉树中。
请设计一个针对上述数据结构的搜索算法,完成在指定的二叉树中搜索指定值的工作。如果没有找到,则输出提示“搜索未成功”。请采用类Python的伪代码完成该搜索算法,可以采用递归算法,也可以采用循环算法。


class Node:
    def __init__(self, val=None, left=None, right=None) -> None:
        """
        :param val:
        :param left:
        :param right:
        """
        self.val = val
        self.left = left
        self.right = right


class SearchTree:
    def __init__(self) -> None:
        self.root = Node()

    def search(self, val) -> bool:
        """
        :param val:
        :return:
        """
        if self.root.val is None:
            self.root.val = val
            print(f"没找到, 初始化二叉树root={val}成功!")
            return False
        else:
            p = self.root
            old = None
            while p is not None:
                if val == p.val:
                    print(f"找打{val}了")
                    return True
                elif val > p.val:
                    old = p
                    p = p.right
                else:
                    old = p
                    p = p.left
            if val > old.val:
                old.right = Node(val=val)
            else:
                old.left = Node(val=val)
            print(f"没找到!添加节点{val}成功")
            return False


if __name__ == '__main__':
    tree = SearchTree()
    arr = ['G', 'D', 'K', 'B', 'F', 'I', 'M', 'A', 'C', 'E', 'H', 'J', 'L']
    for i in arr:
        tree.search(i)
    tree.search('O')
    tree.search('P')
    tree.search('K')

img


搜索树,没有找到就会创建,并且返回一个bool值,True是找到,False是没有找到, 你可以把print给删掉的