63 求二叉搜尋樹的第 K 小的節點

2021-10-12 08:00:22 字數 779 閱讀 8181

題目描述:給定一棵二叉搜尋樹,請找出其中的第 k 小的結點。

思路:二叉搜尋樹的中序遍歷(左--中--右)就是按照從小到大進行排好序的結果,所以如果你想輸出第k小的節點就是找到從左到右的第k個數就ok了! 所以這個問題可以轉化為求二叉搜尋樹的中序遍歷的方法

遞迴版:

int count=0;

public treenode kthnode(treenode proot, int k)

treenode node = kthnode(proot.left, k);

if (node != null)

count++;

if (count == k)

return kthnode(proot.right, k);

}

非遞迴版

public treenode kthnode(treenode proot, int k) 

int count=0;

stackstack = new stack<>();

while(proot!=null || !stack.isempty())

proot = stack.pop();//倒數第一小的節點出來了!

count++;

if(count==k)

proot = proot.right;

} return null;

}

二叉搜尋樹的第k個節點

題目描述 給定一顆二叉搜尋樹,請找出其中的第k大的節點。只需中序遍歷一顆二叉搜尋樹,就很容易找出它的第k大節點 非遞迴方法 class solution treenode pnode s.top s.pop if cnt k return pnode p pnode right return nul...

樹 二叉搜尋樹的第K個節點

給定一棵二叉搜尋樹,請找出其中的第k小的結點。例如,5,3,7,2,4,6,8 中,按結點數值大小順序第三小結點的值為4。分析 二叉搜尋樹就是每個節點x,大於其左子樹的值,小於其右子樹的值,其中序排序是遞增的。使用中序遍歷,每遍歷乙個節點,k 1,直到k減到1,即為第k小的節點 function t...

二叉搜尋樹第K小元素

1.思路 迭代法 計算出二叉樹左節點的個數,如果左節點的個數等於k 1 則根節點就是我們要找的值,如果左節點的個數大於k 1,表明我們要查詢的第k個最小元素在左子樹中,如果左節點的個數小於k 1,表明要查詢的第k個最小元素在右子節點中,找到右子樹中第k count left 1個元素就是我們要找的元...