美文网首页
二叉顺序查找树

二叉顺序查找树

作者: 健健锅 | 来源:发表于2019-01-14 11:50 被阅读15次
func createTree(_ arr:[Int]) -> TreeNode {
        print(arr)
        var tree = self.getNodelTree(arr[0])
        for i  in 1..<arr.count {
         tree = self.inserTree(tree, arr[i])
        }
       return tree
    }
    
    func inserTree(_ tree:TreeNode,_ root:Int) -> TreeNode {
        let rootT = tree
        if rootT.val >= root{
            if rootT.left != nil{
                let newNode = self.inserTree(rootT.left!, root)
                rootT.left = nil
                rootT.left = newNode
                return rootT
            }else{
                let newNode = self.getNodelTree(root)
                rootT.left = newNode
                return rootT
            }
        }else if rootT.val < root{
            if rootT.right != nil{
                let newNode = self.inserTree(rootT.right!, root)
                rootT.right = nil
                rootT.right = newNode
                return rootT
            }else{
                let newNode = self.getNodelTree(root)
                rootT.right = newNode
                return rootT
            }
        }
        return rootT
    }
    
    
    func nodeTreeSearche(_ key:Int , _ arr:[Int]) -> Bool {
        var tree = self.createTree(arr)
        while true { 
            
            let value = tree.val
            if value > key {
                if tree.left != nil{
                    tree = tree.left!
                }else{
                    break
                }
                
            }else if value < key{
                if tree.right != nil{
                    tree = tree.right!
                }else{
                    break
                }
            }else{
                return true
            }
        }
        return false
    }
    
    
    func deleNodeTree(_ key : Int , _ arr : [Int]) -> TreeNode {
        var tree = self.createTree(arr)
        var treeT = tree
        if self.nodeTreeSearche(key, arr){
            print("不存在")
            return tree
        }
    
        while true {
            
            let value = tree.val
            if value > key {
                if tree.left != nil{
                    treeT = tree
                    tree = tree.left!
                }else{
                    break
                }
                
            }else if value < key{
                if tree.right != nil{
                    tree = tree.right!
                }else{
                    break
                }
            }else{
                if tree.left != nil{
                    
                }
            }
        }
        return tree
    }
    
    
    func getNodelTree(_ data:Int) -> TreeNode {
        let tree: TreeNode = TreeNode.init(data)
        tree.left = nil
        tree.right = nil
        return tree
    }

相关文章

  • 《数据结构与算法》知识点(四)

    第七章 查找 顺序查找、折半查找、索引查找、分块查找是静态查找,动态查找有二叉排序树查找,最优二叉树查找,键树查找...

  • 查找

    静态查找顺序查找 折半查找 散列查找 动态查找二叉排序树 散列查找 ASL(平均查找长度) - 衡量查找算法效率的...

  • 极客时间数据结构与算法之美笔记25~26

    二叉树到二叉查找树,是为了查找数据的效率接近logN。 二叉查找树到平衡二叉查找树,是为了防止二叉查找树沦为链表。...

  • 二叉查找树

    1)二叉查找树是什么?2)二叉查找树的插入、删除、查找?3)Go代码实现 一、二叉查找树是什么?二叉查找树(BST...

  • 查找

    查找一般要掌握顺序查找、二分查找、哈希表查找和二叉排序树查找。要能够快速准确地写出二分查找的代码。 1. 顺序查找...

  • 红黑树

    红黑树的本质就是一棵二叉查找树,所以先从二叉查找树来了解起。 二叉查找树 二叉查找树又称有序二叉树,具有以下特性:...

  • 数据结构与算法 13:查找

    目录 一、查找的定义二、线性表的查找2.1 、顺序查找2.2、二分查找2.3、分块查找三、树表查找3.1 、二叉排...

  • 二叉查找树

    二叉查找树,又称二叉搜索树 二叉查找树也称为有序二叉查找树,满足二叉查找树的一般性质,是指一棵空树具有如下性质: ...

  • 2.4.2 查找和排序

    排序 复习1:冒泡排序 复习2:快速排序 查找 1)顺序查找2)二分查找 3)哈希表查找4)二叉排序树查找

  • 99-数据结构和算法

    难点:二叉树的遍历 红黑树 图的遍历 二叉查找树二叉查找树(binary search tree),二叉查找树在二...

网友评论

      本文标题:二叉顺序查找树

      本文链接:https://www.haomeiwen.com/subject/kfyddqtx.html