一般來說,bst(二叉排序樹)有分三種遍歷,前序遍歷,中序遍歷和後序遍歷。
前序遍歷順序是根在前的根,左子樹,右子樹(也是我們一般來表示一棵樹的方法)
中序:左子樹,根,右子樹
後序:左子樹,右子樹,根
值得注意的是在bst樹的中序遍歷之中,結果必然是遞增的。
於是對於下面這一道題目:
題目:kth smallest element in a bst
描述:
given a binary search tree, write a functionkthsmallest
to find the kth smallest element in it.
note:
you may assume k is always valid, 1 ≤ k ≤ bst's total elements.
follow up:
what if the bst is modified (insert/delete operations) often and you need to find the kth smallest frequently? how would you optimize the kthsmallest routine?
在二叉查詢樹之中尋找出其第k小的數
由於剛開始所給的是根節點的指標,而其中樹的資料結構是自上而下的
所以這使我們對第k小的資料查詢出現了困難,這時就想如果能夠擁有乙個陣列,將樹中各項從小到大順序排列,直接查詢就好了
於是就想到了複雜度為o(n)的中序遍歷,解法如下:
/**
* definition for a binary tree node.
* struct treenode
* };
*/class solution
else if(root -> left)
else
}int kthsmallest(treenode* root, int k)
};
這或許在時間複雜度之中不算得最優解法,但是卻有著簡潔明瞭的優點。 SDUT OJ 樹結構練習 排序二叉樹的中序遍歷
time limit 1000ms memory limit 65536k 在樹結構中,有一種特殊的二叉樹叫做排序二叉樹,直觀的理解就是 1 每個節點中包含有乙個關鍵值 2 任意乙個節點的左子樹 如果存在的話 的關鍵值小於該節點的關鍵值 3 任意乙個節點的右子樹 如果存在的話 的關鍵值大於該節點的關...
演算法練習之二叉樹的最大深度,二叉樹的層次遍歷 II
1.二叉樹的最大深度 給定乙個二叉樹,找出其最大深度。二叉樹的深度為根節點到最遠葉子節點的最長路徑上的節點數。說明 葉子節點是指沒有子節點的節點。示例 給定二叉樹 3,9,20,null,null,15,7 3 9 20 15 7返回它的最大深度 3 j a definition for a bin...
我的php學習筆記(七)MySQL在php中的應用
php與mysql建立連線 mysql connect 主機 使用者名稱 密碼 開啟mysql鏈結 mysql select db 資料庫名 連線標示符 開啟乙個資料庫 標示符的意思是現在連線的資料庫主機。可寫可不寫,如果不做特別宣告,則預設為開啟上一次的連線。執行乙個sql語句 mysql squ...