L538 把二叉搜尋樹轉換為累加樹

2021-10-06 13:38:49 字數 1250 閱讀 8333

把二叉搜尋樹轉換為累加樹

給定乙個二叉搜尋樹(binary search tree),把它轉換成為累加樹(greater tree),使得每個節點的值是原來的節點值加上所有大於它的節點值之和。

例如:輸入: 原始二叉搜尋樹:

5

/ \

213輸出: 轉換為累加樹:

18/ \

2013

注意:本題和 1038: 相同

1.利用各種集合來做,就是任意一種遍歷方式,獲取所有的資料集合,然後先排序,再遍歷一次修改資料

class

solution

int tmp =0;

for(integer nn: list)

dfs2

(root)

;//更新

return root;

}void

dfs(treenode root)

void

dfs2

(treenode root)

}

2.注意題意已經說明,這是乙個二叉搜尋樹,上面的解法,並沒有用到這個前提,

這裡直接利用變形的中序遍歷,這樣求和的時候直接可操作

class

solution

return root;

}}

可以直接這樣寫的

class

solution

}

不太習慣直接在原函式遞推,特別還是返回值

class

solution

void

dfs(treenode root)

}

3.利用迭代的方法來求,其實就是變形的中序遍歷迭代方法,右中左,利用乙個棧

class

solution

root = st.

pop();

sum += root.val;

//注意這個是在前面,因為是包含本身的值

root.val = sum;

root = root.left;

}//return root;注意因為這個又返回值,但是root一直在變化

return node;

}}

眾所周知,二叉樹的先序遍歷一共兩種方式,這裡只適用於上面那種,對於另一種則不適用,因為那個只能從根節點開始相加

538 把二叉搜尋樹轉換為累加樹

給定乙個二叉搜尋樹 binary search tree 把它轉換成為累加樹 greater tree 使得每個節點的值是原來的節點值加上所有大於它的節點值之和。例如 輸入 二叉搜尋樹 5 2 13 輸出 轉換為累加樹 18 20 13 和 的應用 用 傳入某值的位址,可以保留函式中修改的資料 de...

538 把二叉搜尋樹轉換為累加樹

題目描述 給定乙個二叉搜尋樹 binary search tree 把它轉換成為累加樹 greater tree 使得每個節點的值是原來的節點值加上所有大於它的節點值之和。例如 輸入 原始二叉搜尋樹 輸出 轉換為累加樹 方法1 在原樹上修改 主要思路 1 二叉搜尋的特性,左結點小於根節點,根節點小於...

538 把二叉搜尋樹轉換為累加樹

給定乙個二叉搜尋樹 binary search tree 把它轉換成為累加樹 greater tree 使得每個節點的值是原來的節點值加上所有大於它的節點值之和。例如 輸入 二叉搜尋樹 5 2 13 輸出 轉換為累加樹 18 20 13 思路 二叉樹的中序遍歷結果就是從小到大的順序輸出,那麼右中左則...