* lisp/emacs-lisp/avl-tree.el (avl-tree--enter-balance): Fix paren typo.

(avl-tree--check, avl-tree--check-node): New funs.

Fixes: debbugs:11077
This commit is contained in:
Stefan Monnier 2012-03-27 16:43:09 -04:00
parent 5d956bc22e
commit b973155e95
2 changed files with 22 additions and 7 deletions

View file

@ -295,9 +295,9 @@ Return t if the height of the tree has grown."
(if (> (* sgn b2) 0) (- sgn) 0)
(avl-tree--node-balance p1)
(if (< (* sgn b2) 0) sgn 0)
(avl-tree--node-branch node branch) p2
(avl-tree--node-balance
(avl-tree--node-branch node branch)) 0))
(avl-tree--node-branch node branch) p2))
(setf (avl-tree--node-balance
(avl-tree--node-branch node branch)) 0)
nil))))
(defun avl-tree--do-enter (cmpfun root branch data &optional updatefun)
@ -339,6 +339,16 @@ inserted data."
(cons nil newdata)) ; return value
))))
(defun avl-tree--check (tree)
"Check the tree's balance."
(avl-tree--check-node (avl-tree--root tree)))
(defun avl-tree--check-node (node)
(if (null node) 0
(let ((dl (avl-tree--check-node (avl-tree--node-left node)))
(dr (avl-tree--check-node (avl-tree--node-right node))))
(assert (= (- dr dl) (avl-tree--node-balance node)))
(1+ (max dl dr)))))
;; ----------------------------------------------------------------