538-累積ツリーにバイナリ検索ツリー

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

公式の説明:https://leetcode-cn.com/problems/convert-bst-to-greater-tree/solution/ba-er-cha-sou-suo-shu-zhuan-huan-wei-lei-jia-shu -3 /

おすすめ

転載: www.cnblogs.com/angelica-duhurica/p/12236756.html