劍指offer 54 二叉搜尋數的第k大節點

2021-10-06 23:55:13 字數 680 閱讀 2474

給定一顆二叉搜尋樹,請找出其中第 k 大的節點

例如在圖中的二叉搜尋樹里,按節點數值大小順序,第三大節點的值是4

三種遍歷方法的考查順序一致,得到的結果卻不一樣,原因在於:**先序:**考察到乙個節點後,即刻輸出該節點的值,並繼續遍歷其左右子樹。(根左右)

**中序:**考察到乙個節點後,將其暫存,遍歷完左子樹後,再輸出該節點的值,然後遍歷右子樹。(左根右)

**後序:**考察到乙個節點後,將其暫存,遍歷完左右子樹後,再輸出該節點的值。(左右根)

二叉樹遍歷(先序、中序、後序)

二叉搜尋樹的中序遍歷就是排序——即找中序遍歷的第k個元素

class solution 

void dsf(treenode* root, int &k)

};

儲存在陣列中,返回 in_order[k-1]

class solution 

void inorder(treenode* root, vector&in_order)

};

劍指offer 54 二叉搜尋樹的第K大結點

給定一棵二叉搜尋樹,請找出其中第k大的結點。include includetypedef int datatype typedef struct bstreenodebstreenode 建立二叉搜尋樹 int bstreeinsert2 bstreenode root,datatype key i...

劍指 Offer 54 二叉搜尋樹的第k大節點

給定一棵二叉搜尋樹,請找出其中第k大的節點。方法一 中序遍歷,然後取值 二叉搜尋數中序遍歷的結果就是乙個有序陣列,演算法也很容易寫。這裡使用了arraylist類 definition for a binary tree node.public class treenode class soluti...

劍指 Offer 54 二叉搜尋樹的第k大節點

劍指 offer 54.二叉搜尋樹的第k大節點 給定一棵二叉搜尋樹,請找出其中第k大的節點。輸入 root 3,1,4,null,2 k 1 輸出 4 二叉搜尋樹,若任意節點的左子樹不空,則左子樹上所有節點的值均小於它的根節點的值 若任意節點的右子樹不空,則右子樹上所有節點的值均大於它的根節點的值 ...