题解 | 二叉搜索树的第k个节点

二叉搜索树的第k个节点

https://www.nowcoder.com/practice/57aa0bab91884a10b5136ca2c087f8ff

import java.util.*;
public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param proot TreeNode类 
     * @param k int整型 
     * @return int整型
     */
     // 二叉搜索树的第k小的结点
     // 思路:首先获取到中序排列的list,之后根据二叉搜索树中序排列有序的特性,list.get(k)就能找到第k小的节点值
     // 注意要判断异常情况
    List<TreeNode> list = new ArrayList<>();
    public int KthNode (TreeNode proot, int k) {
        if(proot == null) return -1;
        // write code here
        InOrder(proot);
        int n = list.size();
        if(k > n || k == 0) return -1;

        return list.get(k-1).val;
    }

    public void InOrder(TreeNode root){
        if(root == null){
            return;
        }else{
            InOrder(root.left);
            list.add(root);
            InOrder(root.right);
        }
    }
}

全部评论

相关推荐

点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务