C語言重構 538 把二叉搜尋樹轉換為累加樹

2021-10-10 03:10:00 字數 1301 閱讀 2095

所有題目源**:git位址

題目

給出二叉 搜尋 樹的根節點,該樹的節點值各不相同,請你將其轉換為累加樹(greater sum tree),使每個節點 node 的新值等於原樹中大於或等於 node.val 的值之和。

節點的左子樹僅包含鍵 小於 節點鍵的節點。

節點的右子樹僅包含鍵 大於 節點鍵的節點。

左右子樹也必須是二叉搜尋樹。

注意:本題和 1038

相同

示例 1:

輸入:[4,

1,6,

0,2,

5,7,null,null,null,

3,null,null,null,8]

輸出:[30,

36,21,

36,35,

26,15,null,null,null,

33,null,null,null,8]

示例 2:

輸入:root =[0

,null,1]

輸出:[

1,null,1]

示例 3:

輸入:root =[1

,0,2

]輸出:[3,

3,2]

示例 4:

輸入:root =[3

,2,4

,1]輸出:[7,

9,4,

10]樹中的節點數介於 0 和 104 之間。

每個節點的值介於 -

104 和 104 之間。

樹中的所有值 互不相同 。

給定的樹為二叉搜尋樹。

方案:
/**

* definition for a binary tree node.

* struct treenode

* treenode(int x) : val(x), left(nullptr), right(nullptr) {}

* treenode(int x, treenode *left, treenode *right) : val(x), left(left), right(right) {}

* };

*/class

solution

//反中序

intdfs

(treenode* root,

int sum)

};

複雜度計算

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

題目描述 給定乙個二叉搜尋樹 binary search tree 把它轉換成為累加樹 greater tree 使得每個節點的值是原來的節點值加上所有大於它的節點值之和。解題思路 中序遍歷右 中 左。右子樹都是大於根節點本身的,所以右子樹的累加和就是根節點需要累加的數值。而左子樹有些特殊。根的左根...

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

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

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

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