leetcode 437.:path sum iii
第乙個想法就是遍歷二叉樹,找出每個節點的可能性。這個思路時間複雜度為o(n^2)。
private
int num;
public
intpathsum
(treenode root,
int sum)
private
void
recur
(treenode root,
int sum,
int add)
add += root.val;
if(add == sum) num++
;recur
(root.left, sum, add)
;recur
(root.right, sum, add)
;}
改進下**
public
intpathsum2
(treenode root,
int sum)
private
intrecur
(treenode node,
int sum)
考慮用額外空間來縮短時間複雜度,採用map,其key為從根節點到該節點這條路徑上所有節點值的和,value記錄該值在整個樹中一共有幾條這樣的路徑(都是從根節點開始)。則遞迴過程中符合要救的路徑的個數:
count=map.get(sum-target) ? 0 : 1;
public
intpathsum3
(treenode root,
int target)
private
intrecur
(treenode node,
int sum,
int target, map
map)
538. convert bst to greater tree// 解法一:利用中序遍歷
private
int sum;
public treenode convertbst
(treenode root)
解法二
// 解法二:利用棧
public treenode convertbst2
(treenode root)
root = stack.
polllast()
; sum += root.val;
root.val = sum;
root = root.left;
}return res;
}
解法三:
// 解法三:morris 演算法,前面兩種解法的時間與空間複雜度均為o(n)
// morris演算法的空間複雜度為o( 1 )
public treenode convertbst3
(treenode root)
else
else}}
return root;
}private treenode getsuccessor
(treenode node)
return succ;
}
二叉樹相關演算法
節點 class node t public node t left public node t right public node t value,node t left,node t right public node t value this value,null null 二叉樹 前中後深度...
二叉樹相關
1.首先建立乙個樹節點,節點有值,左節點和右節點 author 張夢楠 title package description date 2018 5 2519 27 blog www.itzmn.com 樹的節點類 public class treenode public treenode int v...
二叉樹相關
廣度優先遍歷 對於每層的節點,放到乙個用來處理節點佇列裡,另外每個佇列對應乙個vector,將每層節點放進vector 對於每個佇列,彈出先放的元素q.front,將這個元素放進vector,隨後,將左節點和右子節點放進佇列 class solution queue q q.push root wh...