易錯點:節(jié)點刪除(理解java指針就不會犯此類錯誤了)
A.left.left=null;可以直接刪除
但是?c=A.left.left;c=null;并不能刪除,//因為c只是指向A.left.left的參數(shù)允青,c=null表示c不在指向A.left.left了;
但是c.left=null;能刪除侣颂,//因為c.left是對c的操作
遞歸時候坟乾,傳遞的參數(shù)就是A.left.left
遍歷
層次遍歷(*)
非遞歸遍歷(**)
非遞歸中序遍歷
兩件事遞歸(***)
tips
如何得到解題思路:思考這個問題需要怎么遞歸著做迹辐,比如124,我們需要知道從某個節(jié)點到root.left的最大路徑長度是多少甚侣,以及某個節(jié)點到root.right的最大路徑長度是多少;接下來就用這兩個來拼接以root節(jié)點為“最上面的父節(jié)點”所能達到的最長路徑了。因此第一件事就是計算“某個節(jié)點到root的最長路徑是多少了”间学。在此基礎上殷费,去湊題目中的“最長路徑”;
實現(xiàn)的小技巧:先完成一件事低葫,再在此基礎上完成另一件事详羡;可使用全局變量,Map等進行中間結果保存嘿悬。
易錯點:記得置null实柠;謹慎初始化--是否是“至少包含一個節(jié)點”。
二叉搜索樹 (**)
二叉樹+其他算法(**)
操作dp:337. 打家劫舍 III
前綴和+dfs:437. 路徑總和 III