230 二叉搜尋樹中第K小的元素(樹)(BST

2021-10-02 17:32:53 字數 1018 閱讀 9459

方法一:

中序遍歷

用乙個arraylist記錄下中序遍歷經過的結點的值

這個arraylist例項的下標 k-1 處即為第k小的結點

/**

* definition for a binary tree node.

* public class treenode

* }*/class

solution

public arraylist

inorder

(treenode root, arraylist

res)

}

方法二:

也是中序遍歷,但是不附加arraylist儲存中序路徑

private

int cnt =0;

private

int val;

public

intkthsmallest

(treenode root,

int k)

private

void

inorder

(treenode node,

int k)

inorder

(node.right, k)

;}

方法三:

遞迴

/**

* definition for a binary tree node.

* public class treenode

* }*/class

solution

public

intcount

(treenode root)

}

230 二叉搜尋樹中第K小的元素

給定乙個二叉搜尋樹,編寫乙個函式 kthsmallest 來查詢其中第 k 個最小的元素。說明 你可以假設 k 總是有效的,1 k 二叉搜尋樹元素個數。基本上就是中序遍歷 definition for a binary tree node.class treenode object def init...

230 二叉搜尋樹中第K小的元素

難度 中等 題目描述 思路總結 偷個小懶,用中序遍歷出二叉搜尋樹的序列,然後直接返回下標。題解一 definition for a binary tree node.class treenode def init self,x self.val x self.left none self.right...

230 二叉搜尋樹中第K小的元素

題目 給定乙個二叉搜尋樹,編寫乙個函式 kthsmallest 來查詢其中第 k 個最小的元素。說明 你可以假設 k 總是有效的,1 k 二叉搜尋樹元素個數。先是自己寫的糟糕的演算法 然後是官方的迭代演算法,可以在找到之後就不再查詢,降低了時間空間複雜度 class solution root st...