538-累積ツリーにバイナリ検索ツリー
二分探索木(バイナリ検索ツリー)を考えると、各ノードの値は、ノードの元の値であるプラスすべてのノード値が合計よりも大きくなるように、蓄積された木(グレーター木)に変換されます。
例えば:
输入: 二叉搜索树:
5
/ \
2 13
输出: 转换为累加树:
18
/ \
20 13
出典:滞在ボタン(LeetCode)
:リンクhttps://leetcode-cn.com/problems/convert-bst-to-greater-tree
すべてのネットワークからの控除が著作権を保有。商業転載は、ソースを明記してください許可公式、非商用の転載をご連絡ください。
int sum;
public TreeNode convertBST(TreeNode root) {
// 逆中序遍历,求和
sum = 0;
scan(root);
return root;
}
// 递归方法
private void scan(TreeNode root) {
if(root == null) {
return;
}
scan(root.right);
sum += root.val;
root.val = sum;
scan(root.left);
}
Tidyの:(得るより多くのメモリ消費、再帰的なメソッドは値を返すため)
int sum = 0;
public TreeNode convertBST(TreeNode root) {
// 中序遍历,求和
if(root != null) {
convertBST(root.right);
sum += root.val;
root.val = sum;
convertBST(root.left);
}
return root;
}