球拍:二叉树的最大高度
racket: maximum height of a binary tree
我正在尝试在球拍中创建一个代码,它将在二叉搜索树中找到从根到叶的最大距离。
我已经看到这是用 C++ 完成的,但在将它转换为 racket 时遇到了问题。
我已经设法计算出树中的所有节点,但还没有设法单独计算出任何路径。
有什么建议吗?我见过模板和所有这些,但仍然没有成功。
这是我目前尝试过的方法
(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
,只需要求出每个子树的max
加上当前节点的高度:
(define (maxdepth tree)
(cond
[(null? tree) 0]
[else (+ 1 (max (maxdepth (node-left tree))
(maxdepth (node-right tree))))]))
我正在尝试在球拍中创建一个代码,它将在二叉搜索树中找到从根到叶的最大距离。
我已经看到这是用 C++ 完成的,但在将它转换为 racket 时遇到了问题。 我已经设法计算出树中的所有节点,但还没有设法单独计算出任何路径。
有什么建议吗?我见过模板和所有这些,但仍然没有成功。
这是我目前尝试过的方法
(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
,只需要求出每个子树的max
加上当前节点的高度:
(define (maxdepth tree)
(cond
[(null? tree) 0]
[else (+ 1 (max (maxdepth (node-left tree))
(maxdepth (node-right tree))))]))