自己沒有思路婆翔,特別是那種貫穿左右子樹的情況黔姜,不知道該如何計算勺届,看了答案。發(fā)現(xiàn)自己好蠢桑滩,求的是長度數(shù)量又不需要求包含所有node的path,沒有想象的那么難的允睹,只是沒有思考到點子上运准。
submit 1:有個小地方typo.
![Screen Shot 2017-08-24 at 9.02.26 AM.png-269.7kB](http://static.zybuluo.com/w1024020103/kxra1p09261rtr5of5tn928z/Screen%20Shot%202017-08-24%20at%209.02.26%20AM.png)
![Screen Shot 2017-08-24 at 9.02.40 AM.png-75.9kB](http://static.zybuluo.com/w1024020103/c4tv8gfv52m0ihhi34aaazwq/Screen%20Shot%202017-08-24%20at%209.02.40%20AM.png)
ac:
![Screen Shot 2017-08-24 at 9.06.18 AM.png-208kB](http://static.zybuluo.com/w1024020103/jw7fmm6mzqozkam22cztz40e/Screen%20Shot%202017-08-24%20at%209.06.18%20AM.png)
這道題的helper函數(shù)的思路是,從當(dāng)前根節(jié)點出發(fā)缭受,最長連續(xù)路徑 = 左子樹的最長遞增路徑 + 右子樹的最長遞減路徑 - 1 或者 = 左子樹的最長遞減路徑 + 右子樹的最長遞增路徑 - 1胁澳,也就是incSeq + decSeq - 1
helper函數(shù)的返回值是一個int[]. int[0]表示的是從該根節(jié)點出發(fā),最長連續(xù)遞增路徑incSeq; int1表示的是從該根節(jié)點出發(fā)米者,最長連續(xù)遞減路徑decSeq. 我們定義了一個成員變量maxVal來表示所求最長連續(xù)路徑. 那么我們先看當(dāng)前根節(jié)點左子樹韭畸,如果左子樹的val等于根節(jié)點的val + 1, 那么從根節(jié)點出發(fā)的最長遞增路徑長度就等于左子樹的incSeq + 1, 也就是left[0] + 1; 如果左子樹的val = 根節(jié)點val - 1,則根節(jié)點出發(fā)的decSeq就等于左子樹的decSeq + 1, 也就是left1 + 1
右子樹的情況和左子樹類似蔓搞,只是要注意取Math.min, 因為左子樹那邊更新過incSeq, decSeq, 所以右子樹得到的值不一定是左右子樹中的最值胰丁,必須要取最小值才行。maxVal的更新也是喂分,要將incSeq+decSeq - 1遞歸時前面得到的maxVal取最小值锦庸。