二叉搜尋樹中最小的數字

2021-09-27 21:15:03 字數 1965 閱讀 2194

給定乙個二叉搜尋樹,編寫乙個函式 kthsmallest 來查詢其中第 k 個最小的元素。

說明:你可以假設 k 總是有效的,1 ≤ k ≤ 二叉搜尋樹元素個數。

示例 1:

輸入: root = [3,1,4,null,2], k = 13/

1 42

輸出: 1

示例 2:

輸入: root = [5,3,6,2,4,null,null,1], k = 35/

3 6/

2 4/

1輸出: 3

高階:如果二叉搜尋樹經常被修改(插入/刪除操作)並且你需要頻繁地查詢第 k 小的值,你將如何優化 kthsmallest 函式?

原理:二叉查詢樹(binary search tree),(又:二叉搜尋樹,二叉排序樹)它或者是一棵空樹,或者是具有下列性質的二叉樹: 若它的左子樹不空,則左子樹上所有結點的值均小於它的根結點的值; 若它的右子樹不空,則右子樹上所有結點的值均大於它的根結點的值; 它的左、右子樹也分別為二叉排序樹。

二叉排序樹的查詢過程和次優二叉樹類似,通常採取二叉鍊錶作為二叉排序樹的儲存結構。中序遍歷二叉排序樹可得到乙個關鍵字的有序序列,乙個無序序列可以通過構造一棵二叉排序樹變成乙個有序序列,構造樹的過程即為對無序序列進行排序的過程。每次插入的新的結點都是二叉排序樹上新的葉子結點,在進行插入操作時,不必移動其它結點,只需改動某個結點的指標,由空變為非空即可。搜尋,插入,刪除的複雜度等於樹高,o(log(n))

/**

* definition for a binary tree node.

* public class treenode

* }*/public class solution

public void ergodic(treenode node)

}

/**

* definition for a binary tree node.

* public class treenode

* }*/public class solution

public void ergodic(treenode node )

}

前中後序遍歷

//二分搜尋樹的前序遍歷(前序遍歷:根結點 ---> 左子樹 ---> 右子樹)

public void preorder()

//前序遍歷以node為根的二分搜尋樹,遞迴演算法

private void preorder(node node)

system.out.println(node.e);

preorder(node.left);

preorder(node.right);

}//二分搜尋樹的中序遍歷(中序遍歷:左子樹---> 根結點 ---> 右子樹)

public void inorder()

//中序遍歷以node為根的二分搜尋樹,遞迴演算法

private void inorder(node node)

inorder(node.left);

system.out.println(node.e);

inorder(node.right);

}//二分搜尋樹的後序遍歷(後序遍歷:左子樹 ---> 右子樹 ---> 根結點)

public void postorder()

//後序遍歷以node為根的二分搜尋樹,遞迴演算法

private void postorder(node node)

postorder(node.left);

postorder(node.right);

system.out.println(node.e);

}//層次遍歷--(基於佇列實現)

public void levelorder()

if (cur.right!=null)

}}

二叉搜尋樹 二叉搜尋樹

題目 二叉搜尋樹 time limit 2000 1000 ms j a others memory limit 32768 32768 k j a others total submission s 6945 accepted submission s 3077 problem descripti...

二叉搜尋樹 修剪二叉搜尋樹

第一反應是重構,看來別人的解答發現,其實不用重構那麼複雜。treenode trimbst treenode root,int low,int high if root val high 下一層處理完左子樹的結果賦給root left,處理完右子樹的結果賦給root right。root left ...

二叉搜尋樹結點最小距離

給定乙個二叉搜尋樹的根結點 root,返回樹中任意兩節點的差的最小值。示例 輸入 root 4,2,6,1,3,null,null 輸出 1 解釋 注意,root是樹結點物件 treenode object 而不是陣列。給定的樹 4,2,6,1,3,null,null 可表示為下圖 4 2 6 1 ...