題目描述:
給定一棵二叉搜尋樹,請找出其中的第k小的結點。例如, (5,3,7,2,4,6,8) 中,按結點數值大小順序第三小結點的值為4。
題解:
根據二叉樹的特性,可知中序遍歷搜尋二叉樹得到的序列是有序的。
可以利用此特性來解決這個問題。
解法一:遞迴
public
class
solution
help (root.left,k)
; count++;if
(count == k)
if(count > k)
else
} treenode kthnode
(treenode proot,
int k)
help
(proot,k)
;return knode;
}}
解法二:非遞迴,利用棧。
treenode kthnode
(treenode proot,
int k)
stack
stack =
newstack
<
>()
;//建立棧
treenode cur = proot;
//while 部分為中序遍歷
while
(!stack.
isempty()
|| cur != null)
else
cur = cur.right;}}
return null;
}
62 序列化二叉樹
題目描述 請實現兩個函式,分別用來序列化和反序列化二叉樹.二叉樹的序列化是指 把一棵二叉樹按照某種遍歷方式的結果以某種格式儲存為字串,從而使得記憶體中建立起來的二叉樹可以持久儲存。序列化可以基於先序 中序 後序 層序的二叉樹遍歷方式來進行修改,序列化的結果是乙個字串,序列化時通過 某種符號表示空節點...
JZ61 序列化二叉樹
請實現兩個函式,分別用來序列化和反序列化二叉樹 二叉樹的序列化是指 把一棵二叉樹按照某種遍歷方式的結果以某種格式儲存為字串,從而使得記憶體中建立起來的二叉樹可以持久儲存。序列化可以基於先序 中序 後序 層序的二叉樹遍歷方式來進行修改,序列化的結果是乙個 字串,序列化時通過 某種符號表示空節點 以 表...
JZ61 序列化二叉樹
請實現兩個函式,分別用來序列化和反序列化二叉樹,不對序列化之後的字串進行約束,但要求能夠根據序列化之後的字串重新構造出一棵與原二叉樹相同的樹。輸入 返回值 基於先序遍歷,把所有結點的 val 儲存到字串中 用空格間隔開每個結點得到 val 對於子結點為空的,用 標識也儲存到字串中,這就是序列化的過程...