题解 | #二叉搜索树的第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);
}
查看11道真题和解析