二叉樹的坡度

2021-09-25 11:14:00 字數 746 閱讀 3140

給定乙個二叉樹,計算整個樹的坡度。

乙個樹的節點的坡度定義即為,該節點左子樹的結點之和和右子樹結點之和的差的絕對值。空結點的的坡度是0。

整個樹的坡度就是其所有節點的坡度之和。

示例:輸入: 

1/   \

2     3

輸出: 1

解釋: 

結點的坡度 2 : 0

結點的坡度 3 : 0

結點的坡度 1 : |2-3| = 1

樹的坡度 : 0 + 0 + 1 = 1

注意:任何子樹的結點的和不會超過32位整數的範圍。

坡度的值不會超過32位整數的範圍。

思路:求所有節點的坡度和,就是把每乙個節點的坡度陡加起來

那麼每乙個節點的坡度如何求?

就是用這個節點的左子樹的節點和 和 右子樹的節點的差的絕對值 

所以問題就變成了給定乙個節點,求這個節點下的子樹和

那麼這裡用前序,中旭,還是後序更好呢 ?

答案是後序,對根節點處理之前,我們已經遍歷了左子樹和右子樹,也就是說求根節點的坡度的時候這個節點的左子樹的和 右子樹的和都已經知道了,這不就是我們想要的嗎. 兩者做差求絕對值,就是當前跟節點的坡度.

/**

* definition for a binary tree node.

* struct treenode

* };

*/class solution

};

二叉樹的坡度

分治遞迴 遞迴函式有兩個作用,一是計算樹的節點和 也是遞迴函式的返回值 樹的節點和 根節點值 左子樹節點和 右子樹節點和。定義全域性變數記錄節點坡度和,在遞迴函式計算完左子樹節點和以及右子樹節點和後,計算根節點的坡度,然後全域性變數加上該根節點的坡度完成更新。遞迴結束後,全域性變數的值即為所有節點坡...

563 二叉樹的坡度

給定乙個二叉樹,計算整個樹的坡度。乙個樹的節點的坡度定義即為,該節點左子樹的結點之和和右子樹結點之和的差的絕對值。空結點的的坡度是0。整個樹的坡度就是其所有節點的坡度之和。示例 輸入 1 23輸出 1解釋 結點的坡度 2 0 結點的坡度 3 0 結點的坡度 1 2 3 1樹的坡度 0 0 1 1注意...

563 二叉樹的坡度

給定乙個二叉樹,計算整個樹的坡度。乙個樹的節點的坡度定義即為,該節點左子樹的結點之和和右子樹結點之和的差的絕對值。空結點的的坡度是0。整個樹的坡度就是其所有節點的坡度之和。示例 輸入 1 2 3輸出 1 解釋 結點的坡度 2 0 結點的坡度 3 0 結點的坡度 1 2 3 1 樹的坡度 0 0 1 ...