這道題讓我們將二叉搜索樹轉為較大樹,通過題目匯總的例子可以明白,是把每個結點值加上所有比它大的結點值總和當作新的結點值。
二叉搜索樹的定義:
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