美文网首页
剑指 offer 笔记 62 | 二叉搜索树的第k个结点

剑指 offer 笔记 62 | 二叉搜索树的第k个结点

作者: ProudLin | 来源:发表于2019-11-15 22:52 被阅读0次

    题目描述
    给定一棵二叉搜索树,请找出其中的第k小的结点。例如, (5,3,7,2,4,6,8) 中,按结点数值大小顺序第三小结点的值为4。

    思路分析
    二叉搜索树按照中序遍历的顺序打印出来正好就是排序好的顺序。
    所以,按照中序遍历顺序找到第k个结点就是结果。

    解释说明:

    public class Solution {
    
        private TreeNode ret;
        private int cnt = 0;
    
        public TreeNode KthNode(TreeNode pRoot, int k) {
            inOrder(pRoot, k);
            return ret;
        }
    
        private void inOrder(TreeNode root, int k) {
            if (root == null || cnt >= k)
                return;
            inOrder(root.left, k);
            cnt++;
            if (cnt == k)
                ret = root;
            inOrder(root.right, k);
        }
    
    }
    

    相关文章

      网友评论

          本文标题:剑指 offer 笔记 62 | 二叉搜索树的第k个结点

          本文链接:https://www.haomeiwen.com/subject/mawtictx.html