摘要:代碼層序遍歷復雜度時間空間對于二叉樹思路我們同樣可以借用層序遍歷的思路,只要每次把這一層的最后一個元素取出來就行了,具體代碼參見中的
Binary Tree Right Side View
深度優先搜索 復雜度Given a binary tree, imagine yourself standing on the right side of it, return the values of the nodes you can see ordered from top to bottom.
For example: Given the following binary tree,
1 <--- / 2 3 <--- 5 4 <---You should return [1, 3, 4].
時間 O(b^(h+1)-1) 空間 O(h) 遞歸棧空間 對于二叉樹b=2
思路本題實際上是求二叉樹每一層的最后一個節點,我們用DFS先遍歷右子樹并記錄遍歷的深度,如果這個右子節點的深度大于當前所記錄的最大深度,說明它是下一層的最右節點(因為我們先遍歷右邊,所以每一層都是先從最右邊進入),將其加入結果中。
代碼public class Solution { int maxdepth = 0; List層序遍歷 Level Order Traversal 復雜度res; public List rightSideView(TreeNode root) { res = new LinkedList (); if(root!=null) helper(root,1); return res; } private void helper(TreeNode root, int depth){ if(depth>maxdepth){ maxdepth = depth; res.add(root.val); } if(root.right!=null) helper(root.right, depth+1); if(root.left!=null) helper(root.left, depth+1); } }
時間 O(b^(h+1)-1) 空間 O(b^h) 對于二叉樹b=2
思路我們同樣可以借用層序遍歷的思路,只要每次把這一層的最后一個元素取出來就行了,具體代碼參見Binary Tree Traversal中的Binary Tree Level Order Traversal
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/64469.html
摘要:有效三角形的個數雙指針最暴力的方法應該是三重循環枚舉三個數字。總結本題和三數之和很像,都是三個數加和為某一個值。所以我們可以使用歸并排序來解決這個問題。注意因為歸并排序需要遞歸,所以空間復雜度為 ...
摘要:遞歸法復雜度時間空間遞歸棧空間對于二叉樹思路簡單的二叉樹遍歷,遍歷的過程中記錄之前的路徑,一旦遍歷到葉子節點便將該路徑加入結果中。當遇到最小公共祖先的時候便合并路徑。需要注意的是,我們要單獨處理目標節點自身是最小公共祖先的情況。 Root To Leaf Binary Tree Paths Given a binary tree, return all root-to-leaf pat...
摘要:原題鏈接遞歸法復雜度時間空間遞歸棧空間思路這個難倒大神的題也是非常經典的一道測試對二叉樹遍歷理解的題。遞歸的終止條件是當遇到空節點或葉子節點時,不再交換,直接返回該節點。代碼給出的是后序遍歷的自下而上的交換,先序遍歷的話就是自上而下的交換。 Invert Binary Tree Invert a binary tree. 4 / 2 7 / ...
LeetCode 104 Maximum Depth of Binary Tree難度:Easy 題目描述:找到一顆二叉樹的最深深度。Given a binary tree, find its maximum depth. The maximum depth is the number of nodes along the longest path from the root node down ...
閱讀 2296·2021-11-24 10:18
閱讀 2730·2021-11-19 09:59
閱讀 1718·2019-08-30 15:53
閱讀 1196·2019-08-30 15:53
閱讀 1078·2019-08-30 14:19
閱讀 2489·2019-08-30 13:14
閱讀 3024·2019-08-30 13:00
閱讀 1957·2019-08-30 11:11