二叉樹相關演算法 二

2021-08-28 01:17:40 字數 1719 閱讀 6206

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...