Swift:二叉树搜索,int 不在树中

标签 swift binary-tree

我正在浏览 Ray Weynderlich 的 Swift Algo Club 文件,他使用此代码获取树高:

   func findTreeHeight() -> Int {

        if isLeaf {
            return 0
        } else {
            return 1 + max(leftChild?.findTreeHeight() ?? 0, rightChild?.findTreeHeight() ?? 0)
        }

    }

如果我用这个数组创建树:

let myTree = BinaryTree(arrValues: [7, 2, 5, 10, 9, 1])

高度不应该是4吗?我得到 2。

这是初始化和插入函数:

init(value:Int) {
        self.value = value
    }

    convenience init(arrValues:Array<Int>) {

        precondition(arrValues.count > 0)
        self.init(value: arrValues.first!)
        for thisValue in arrValues.dropFirst() {
            insertValue(value: thisValue)
        }
    }

    func insertValue(value:Int) {

        if value < self.value {
            //insert on left
            if let leftChild = self.leftChild {
                leftChild.insertValue(value: value)
            } else {
                leftChild = BinaryTree(value: value)
                leftChild?.parent = self
            }
        } else {
            //insert on right
            if let rightChild = self.rightChild {
                rightChild.insertValue(value: value)
            } else {
                rightChild = BinaryTree(value: value)
                rightChild?.parent = self
            }
        }
    }

和伪打印出来的扩展

extension BinaryTree: CustomStringConvertible {
    public var description: String {
        var s = ""
        if let left = leftChild {
            s += "(\(left.description)) <- "
        }
        s += "\(value)"
        if let right = rightChild {
            s += " -> (\(right.description))"
        }
        return s
    }
}

这是我一直关注的链接:

https://github.com/raywenderlich/swift-algorithm-club/tree/master/Binary%20Search%20Tree

最佳答案

高度是2是正确的。它是从节点到叶节点的最长路径中的边数。

关于Swift:二叉树搜索,int 不在树中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46815788/

相关文章:

ios - 从推送序列中删除渐变

ios - 在 Apps Hierarchy 中替换 Storyboard 的正确方法,而不是 Presenting over

java -++i 和 i = 1 在递归函数中的区别

c++ - 列出并统计二叉树从根到叶子的最重路径

javascript - 从 native Webview 获取网页的动态内容

ios - UISegment 控件 - 根据日期设置选择 (SWIFT)

algorithm - 遍历二叉树的方法数

c - 没有递归的二叉搜索树插入 C

ios - stringByAddingPercentEncodingWithAllowedCharacters 在空格上的行为很奇怪

java - 无法正确创建二叉树?