這道題讓我們將二叉搜索樹轉為較大樹氏仗,通過題目匯總的例子可以明白,是把每個結點值加上所有比它大的結點值總和當作新的結點值八孝。
二叉搜索樹的定義:
BST 的定義:(二叉搜索樹)
左子樹的所有節(jié)點值都小于根節(jié)點;
右子樹的所有節(jié)點值都大于根結點;
左右子樹也是BST
可以知道丧叽,根結點轉化后=根節(jié)點+所有右子樹節(jié)點的和
那么,觀察右子樹公你,其根結點a轉化后=根結點a+其所有右子樹節(jié)點的和
以此類推踊淳,可以知道必須先對最后一個右子樹處理
對于最后一個右子樹,根結點b = b+右節(jié)點c陕靠;
右節(jié)點c = c迂尝;
左節(jié)點a = a+初始b+初始c。
也就是說剪芥,變量sum初始為0
1垄开、先求原始值sum = c;
2税肪、到根結點溉躲,sum = b+c,然后b = sum
3益兄、到左節(jié)點锻梳,根結點、右節(jié)點都大于它净捅,所以 sum = a+sum疑枯;a=sum
上面123所述,可以看出是右根左的中序遍歷蛔六,因此有以下代碼:
11.PNG