二叉搜索樹的第 k 個結點


給定一棵二叉搜索樹,請找出其中的第 k 小的結點


解題思路

根據二叉搜索樹的性質,按照中序遍歷的順序打印出來正好就是排序好的順序,所以,按照中序遍歷順序找到第 k個結點就是結果

在遍歷過程中,如果發現有符合條件的結點,則直接遞歸向上返回,因此返回的 node 必然不爲空,正好符合判斷條件。如果不做 node 是否爲 null 的判斷,則目標結點會被其父結點所覆蓋

public class Solution {
    
    int count = 1;
    TreeNode KthNode(TreeNode pRoot, int k) {
        if(pRoot != null) {
            TreeNode node = KthNode(pRoot.left, k);
            if(node != null) {
                return node;
            }
            if(count == k) {
                return pRoot;
            }
            count++;
            node = KthNode(pRoot.right, k);
            if(node != null) {
                return node;
            }
        }
        return null;
    }
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章