給定一棵二叉搜尋樹,請找出其中的第k小的結點。例如, (5,3,7,2,4,6,8) 中,按結點數值大小順序第三小結點的值為4。
對於二叉搜尋樹,使用中序遍歷就能得到排序好的序列;每次訪問乙個節點,計數-1;直到計數為0時返回。
/*
struct treenode
};*/
class
solution
treenode *
find
(treenode* proot,
int&k)if(
--k ==0)
// 注意這個地方要先減1再判斷
return proot;
treenode *right =
find
(proot-
>right,k);if
(right!=
nullptr
)return
nullptr;}
};
劍指offer 二叉搜尋樹的第k個節點
esmp esmp 給定一顆二叉搜尋樹,請找出其中的第k大的結點。例如,5 3 7 2 4 6 8 中,按結點數值大小順序第三個結點的值為4。esmp esmp 首先一點要清晰二叉搜尋樹的特點,也就是 左孩子 父節點 右孩子。所以,根據這一特點可知,二叉搜尋樹的中序遍歷結果就是乙個公升序的序列。題目...
劍指offer 二叉搜尋樹的第k個結點
二叉搜尋樹 根結點的值大於左子樹中任一結點的值,小於右子樹中任一結點的值。答案 二叉搜尋樹按照中序遍歷得到的結果就是遞增的序列,所以要找第k小結點,可以按照中序遍歷去查詢。如下 建立樹的結點 class node def init self,a 0 self.val a self.left none...
劍指offer 二叉搜尋樹的第k個結點
題目描述 給定一棵二叉搜尋樹,請找出其中的第k小的結點。例如,5,3,7,2,4,6,8 中,按結點數值大小順序第三小結點的值為4。思路 二叉搜尋樹按照中序遍歷的順序列印出來正好就是排序好的順序。方法一 設定乙個陣列,然後中序遍歷二叉樹,將節點依次加入到陣列中 struct treenode cla...