刷題日記7
100.?相同的樹:
開啟二叉樹啦~立志要啃下它?。?!
這題其實就是遍歷一下兩棵樹就可以了。可以采取任何搜索方式,遞歸,非遞歸。為了練手,我把遞歸和dfs,bfs都寫了一遍。

101.?對稱二叉樹:
這題其實和100.相同的樹是同樣的解題思路。

104.?二叉樹的最大深度:
這題用遞歸,如果root==null,返回0,否則返回左子樹或者右子樹的較大值+1。

111.?二叉樹的最小深度:
和上題具有相似之處,還要添加如果root.left為null,返回右子樹+1,如果root.right為null,返回左子樹+1。

112.?路徑總和:
用棧stack<pair<TreeNode*,int>> stk存儲節(jié)點和到該節(jié)點的路徑和。如果root==null,直接返回false,這題有個關(guān)鍵在于判斷葉節(jié)點,一定要left和right同時為null才可以。
我在一開始想用遞歸做,但是寫不出來,用以上方法AC之后,看了題解,關(guān)鍵在于遞歸的是sum-root.val。

222.?完全二叉樹的節(jié)點個數(shù):
用一個遞歸,如果root為null,返回0,否則返回左子樹的節(jié)點數(shù)+右子樹的節(jié)點數(shù)+1(根節(jié)點)。

226.?翻轉(zhuǎn)二叉樹:
用棧stack<TreeNode*> stk存儲節(jié)點,交換top的左右子樹,如果左子樹不null則加入stk,右子樹亦然。
又是想用遞歸但不會的一題,看了題解。如果root為null,返回null,否則交換左右子樹,再遞歸交換以左右子樹為根的左右子樹,返回root。
標(biāo)簽: