二叉查找树(Binary Search Tree,BST),也叫二叉搜索树,排序二叉树,指一棵空树或具有下列性质的二叉树:
- 若任意节点的左子树不为空,则左子树上所有节点的值均小于它的根节点的值
- 若任意节点的右子树不为空,则右子树上所有节点的值均大于它的根节点的值
- 任意节点的左,右子树也分别为二叉查找树
- 没有键值相等的点
实例
leetcode 538 convert-bst-to-greater-tree
把 bst 转为累加树,采用反向中序遍历求解
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
var convertBST = function(root) { var stack = []; var currentNode = root; var sum = 0; while (currentNode || stack.length > 0) { if (currentNode) { stack.push(currentNode); currentNode = currentNode.right; } else { var node = stack.pop(); sum += node.val; node.val = sum; currentNode = node.left; } } return root; }; |