[剑指offer] 二叉搜索树的第k个结点

简介: 本文首发于我的个人博客:尾尾部落题目描述给定一棵二叉搜索树,请找出其中的第k小的结点。例如, (5,3,7,2,4,6,8)中,按结点数值大小顺序第三小结点的值为4。

本文首发于我的个人博客:尾尾部落

题目描述

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

解题思路

因为二叉搜索树按照中序遍历的顺序打印出来就是排好序的,所以,我们按照中序遍历找到第k个结点就是题目所求的结点。

参考代码

/*
public class TreeNode {
    int val = 0;
    TreeNode left = null;
    TreeNode right = null;
    
    public TreeNode(int val) {
        this.val = val;
    }
}
*/
public class Solution {
    int index = 0;
    TreeNode KthNode(TreeNode pRoot, int k)
    {
        if(pRoot != null){
            TreeNode node = KthNode(pRoot.left, k);
            if(node != null)
                return node;
            index ++;
            if(index == k)
                return pRoot;
            node = KthNode(pRoot.right, k);
            if(node != null)
                return node;
        }
        return null;
    }
}
目录
相关文章
|
4月前
|
C++ Python
leetcode-235:二叉搜索树的最近公共祖先
leetcode-235:二叉搜索树的最近公共祖先
31 1
|
4月前
二叉树刷题记(九-二叉搜索树中的中序后继-中序遍历)
二叉树刷题记(九-二叉搜索树中的中序后继-中序遍历)
|
4月前
|
算法 API DataX
二叉树(下)+Leetcode每日一题——“数据结构与算法”“对称二叉树”“另一棵树的子树”“二叉树的前中后序遍历”
二叉树(下)+Leetcode每日一题——“数据结构与算法”“对称二叉树”“另一棵树的子树”“二叉树的前中后序遍历”
剑指offer-7.二叉树的下一个节点
剑指offer-7.二叉树的下一个节点
31 1
剑指offer 58. 二叉搜索树的第k个结点
剑指offer 58. 二叉搜索树的第k个结点
50 0
剑指offer_二叉树---二叉搜索树的第k个结点
剑指offer_二叉树---二叉搜索树的第k个结点
59 0
剑指offer_二叉树---二叉搜索树与双向链表
剑指offer_二叉树---二叉搜索树与双向链表
55 0
剑指offer 07. 二叉树的下一个节点
剑指offer 07. 二叉树的下一个节点
56 0
面试题——求二叉树的下一个结点
给定一颗二叉树和其他的一个结点,如何找出中序遍历序列的下一个节点?树中的节点除了两个分别指向左右节点的指针,还有一个指向父亲节点的指针。
57 0
leetcode235二叉树搜索树的最近公共祖先
leetcode235二叉树搜索树的最近公共祖先
57 0
leetcode235二叉树搜索树的最近公共祖先