538.把二叉搜索树转换为累加树
链接:538.把二叉搜索树转换为累加树
难度:Medium
标签:树、深度优先搜索、二叉搜索树、二叉树
简介:给定一个二叉搜索树(Binary Search Tree),把它转换成为累加树(Greater Tree),使得每个节点的值是原来的节点值加上所有大于它的节点值之和。
题解 1 - typescript
- 编辑时间:2020-09-21
- 执行用时:244ms
- 内存消耗:47MB
- 编程语言:typescript
- 解法介绍:中序遍历排序后利用 reduce 累加。
function convertBST(root: TreeNode | null): TreeNode | null {
if (isNull(root)) return null;
const arr: number[] = [];
inorder(root);
toGreaterTree(root);
return root;
function isNull(node: TreeNode | null): node is null {
return node === null;
}
function toGreaterTree(node: TreeNode | null): void {
if (isNull(node)) return;
node.val = arr.reduce((total, cur) => total + (cur > node.val ? cur : 0), node.val);
toGreaterTree(node.left);
toGreaterTree(node.right);
}
function inorder(node: TreeNode | null): void {
if (isNull(node)) return;
inorder(node.left);
arr.push(node.val);
inorder(node.right);
}
}