跳到主要内容

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);
}
}