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

2022-05-09 04:00:07 字數 1053 閱讀 4137

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

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

5/  \

2 13

輸出: 轉換為累加樹:

18/ \

20 13

思路:二叉樹的中序遍歷結果就是從小到大的順序輸出,那麼右中左則是從大到小的結果輸出了,很明顯從大到小記錄下當前的值加到後乙個元素即可。這裡採用遞迴的方法遍歷整棵樹。

solution:

1/**

2* definition for a binary tree node.

3* struct treenode

8* };9*/

10class

solution

17 treenode* reversepostorder(treenode*root)

1826

return

root;27}

2829

private:30

intsum;

31 };

反思:真是汗顏,我對二叉樹的理解真是差。中序就是從小到大的順序輸出我居然完全想不起來!再試試用迭代的方法來做這題。

solution2:

1/**

2* definition for a binary tree node.

3* struct treenode

8* };9*/

10class

solution

17private

:18 treenode* de_inorder(treenode*root)

1929

if (!st.empty())

3037}38

return

root;39}

40private:41

intsum;

42 };

反思:二叉樹的中序遍歷迭代版本,和之前的版本沒區別。

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 definition for a binary tree ...