給出節點數,然後找出所有可能的二叉樹形狀;
搞懂遞迴和動態規劃
我們從序列 1 …n 中取出數字 i,作為當前樹的樹根。於是,剩餘 i - 1 個元素可用於左子樹,n - i 個元素用於右子樹;
不行,我感覺遞迴太難理解了;宣布失敗
class
solution;}
return
solve(1
,n);
}private
: vector>
solve
(int left,
int right)
; vector>res;
for(
int i = left; i <= right; i++)}
}return res;}}
;
95%以上的遞迴都可以用動態規劃來改寫;
對樹的操作和指標理解很有幫助
lass solution
treenode*
copy
(treenode* root)
vector>
generatetrees
(int n)
//連線右子樹}}
}return dp[n];}
};
注意多使用私有方法
class
solution
treenode *newhead =
newtreenode
(i);
newhead-
>left =
copytree
(head)
; dp[j]
= newhead;}}
return dp;
} treenode*
copytree
( treenode *node )
treenode*
search
( treenode *node,
int val )
};
** 看**沒有框架思路,看起來很頭疼;還有不能只是眼看,還是得用手寫出來,畫出來** LeetCode刷題 129 根到葉子節點數字之和
給定乙個二叉樹,它的每個結點都存放乙個0 9的數字,每條從根到葉子節點的路徑都代表乙個數字。例如,從根到葉子節點路徑1 2 3代表數字123。計算從根到葉子節點生成的所有數字之和。說明 葉子節點是指沒有子節點的節點。示例 1 輸入 1,2,3 1 2 3 輸出 25 解釋 從根到葉子節點路徑 1 2...
動手刷LeetCode 判斷括號有效
給定乙個只包括 的字串,判斷字串是否有效。有效字串需滿足 左括號必須用相同型別的右括號閉合。左括號必須以正確的順序閉合。注意空字串可被認為是有效字串。字串知識點 string s 常見操作方法 解法一 棧配對法 這是乙個有技術含量的演算法 定義res作為乙個棧 遍歷整個字串,將每個左括號加入res ...
刷leetcode之刪除鍊錶節點
請編寫乙個函式,使其可以刪除某個鍊錶中給定的 非末尾 節點,你將只被給定要求被刪除的節點。現有乙個鍊錶 head 4,5,1,9 它可以表示為 示例 1 輸入 head 4,5,1,9 node 5 輸出 4,1,9 解釋 給定你鍊錶中值為 5 的第二個節點,那麼在呼叫了你的函式之後,該鍊錶應變為 ...