Tree 球拍:二叉树的最大高度
我试图在racket中创建一个代码,在二叉搜索树中找到从根到叶的最大距离 我在C++中看到了这一点,但是我把它翻译成球拍有困难。 我已经设法计算了树中的所有节点,但还没有设法单独计算任何路径 有什么建议吗?我已经看到了模板和所有这些,但仍然没有设法使一个工作 这就是我到目前为止所尝试的Tree 球拍:二叉树的最大高度,tree,height,binary-tree,racket,distance,Tree,Height,Binary Tree,Racket,Distance,我试图在racket中创建一个代码,在二叉搜索树中找到从根到叶的最大距离 我在C++中看到了这一点,但是我把它翻译成球拍有困难。 我已经设法计算了树中的所有节点,但还没有设法单独计算任何路径 有什么建议吗?我已经看到了模板和所有这些,但仍然没有设法使一个工作 这就是我到目前为止所尝试的 (define-struct node (left right)) (define (maxdepth tree) (cond [(null? tree) 0]
(define-struct node (left right))
(define (maxdepth tree)
(cond
[(null? tree) 0]
[ (> (size (node-left tree)) (size (node-right tree)))
(maxdepth (node-left tree))]
[else (maxdepth (node-right tree))]))
(define (size tree)
(if (null? tree) 0
(+ 1 (size (node-left tree)) (size (node-right tree)))))
我们只需要一个函数-
maxdepth
,只需找到每个子树的高度加上当前节点的高度:
(define (maxdepth tree)
(cond
[(null? tree) 0]
[else (+ 1 (max (maxdepth (node-left tree))
(maxdepth (node-right tree))))]))
难道
maxdepth
和size
不应该计算相同的值吗?在size
中,向两个子树大小添加一个,而不是选择最大的。提示: