演算法練習筆記(七) 在BST樹中的遍歷

2021-07-29 20:28:17 字數 1059 閱讀 4907

一般來說,bst(二叉排序樹)有分三種遍歷,前序遍歷,中序遍歷和後序遍歷。

前序遍歷順序是根在前的根,左子樹,右子樹(也是我們一般來表示一棵樹的方法)

中序:左子樹,根,右子樹 

後序:左子樹,右子樹,根

值得注意的是在bst樹的中序遍歷之中,結果必然是遞增的。

於是對於下面這一道題目:

題目:kth smallest element in a bst

描述:

given a binary search tree, write a functionkthsmallestto 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...