// 遞迴版,時間複雜度o(n),空間複雜度o(logn)
private static int mindepth(treenode root)
同上,遞迴版,// 時間複雜度o(n),空間複雜度o(logn)
public int maxdepth(treenode root)
return true, as there exist a root-to-leaf path 5->4->11->2 which sum is 22
// 時間複雜度o(n),空間複雜度o(logn)
public boolean haspathsum(treenode root, int sum)
同上,返回路徑 // 時間複雜度o(n),空間複雜度o(logn)
public list> pathsum(treenode root, int sum)
private static void pathsum(treenode root, int gap, arraylistcur, list> result)
} pathsum(root.left, gap - root.val, cur, result);
pathsum(root.right, gap - root.val, cur, result);
cur.remove(cur.size() - 1); //新增的刪除了
}
// 時間複雜度o(n),空間複雜度o(logn)
private int max_sum;
private int dfs(treenode root)
二叉樹遞迴
我們來看一下二分搜尋樹的釋放,這就是乙個典型的遞迴問題 function destroy node 這個遞迴包括兩個部分,乙個是遞迴終止條件,乙個是遞迴的執行。我們知道遞迴是不斷地將當前函式壓入函式棧,如果沒有if node null return這個終止條件,當函式棧被壓滿之後就會發生棧溢位 棧的...
遞迴二叉樹
1 基本概念 1 節點 結點包含資料和指向其它節點的指標。2 根節點 樹第乙個結點稱為根節點。3 結點的度 結點擁有的子節點個數。4 葉節點 沒有子節點的節點 度為0 5 父子節點 乙個節點father指向另乙個節點child,則child為孩子節點,father為父親節點。6 兄弟節點 具有相同父...
二叉樹 遞迴
完全二叉樹 只有最後一層不滿,其餘節點都有兩個孩子,並且最後一層的節點從左向右排列,如下圖 擴充二叉樹 每個實節點都有兩個孩子,如圖 類似dfs cout data preorder recursion bt leftchild preorder recursion bt rightchild vo...