【每日一題-leetcode】538.把二叉搜索樹轉換爲累加樹

538.把二叉搜索樹轉換爲累加樹

  1. 把二叉搜索樹轉換爲累加樹

難度簡單275

給定一個二叉搜索樹(Binary Search Tree),把它轉換成爲累加樹(Greater
Tree),使得每個節點的值是原來的節點值加上所有大於它的節點值之和。

例如:

輸入: 原始二叉搜索樹:
              5
            /   \
           2     13

輸出: 轉換爲累加樹:
             18
            /   \
          20     13

我們分析一下 原來BST的結果爲 [2,5,13] 轉換後爲[20,18,13] 而[13,18,20]只是他的逆序。 也就是中序遍歷的逆序、累加上sum,因此直接用中序遍歷的逆序即可。先遍歷右子節點 保存當前值,在遍歷左子節點。

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;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章