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

二叉搜索树的第k个节点

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

递归实现二叉树的中序遍历(根据二叉搜索树的排序性质)

1.借助数据存储中序遍历得到的有序数据,找到第k个值

2.标记遍历访问的结点个数,找到第k个值

ArrayList<Integer> s = new ArrayList<>();
    public int KthNode (TreeNode proot, int k) {
        // write code here
        dfs(proot);
        if(s.size()<k||k==0)return -1;
        return s.get(k-1);

    }
    public void dfs(TreeNode root){
        if(root==null)return ;
        dfs(root.left);//左,每棵子树的左结点遍历完后,都会进入下一步
        s.add(root.val);//中,按左中右的顺序在每个子树中存储数据
        dfs(root.right);
    }
全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

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