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

二叉搜索树的第k个节点

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

思路:
本题是求第k个元素,且给出的树是二叉搜索树,该树有一个特点即根结点值介于左、右子节点之间,于是对树中序遍历,得到一个升序集合,求集合里第k个元素返回其值。

public class Solution {
    //中序遍历,结果存入ArrayList中
    public void traverse (TreeNode root, List<Integer> l) {
        if (root==null)
            return;
        traverse(root.left, l);
        l.add(root.val);
        traverse(root.right, l);
    }
    public int KthNode (TreeNode proot, int k) {
        if (proot==null)    //特殊情况处理
            return -1;
        List<Integer> l = new ArrayList<>();
        traverse(proot, l);    //遍历得升序集合
        if (k>l.size()||k<1)    //特殊情况处理
            return -1;
        return l.get(k-1);
    }
}
全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

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