class Solution {
    LinkedList<TreeNode> queue = new LinkedList<>();

    public TreeNode KthNode(TreeNode pRoot, int k) {
        if (pRoot == null || k == 0)
            return null;
        midOrder(pRoot);
        return queue.get(k - 1);
    }

    private void midOrder(TreeNode root) {
        if (root == null) return;
        midOrder(root.left);
        queue.add(root);
        midOrder(root.right);
    }
}
老哥,我根据你的代码改了改,觉得有这几个问题:
1.递归时使用的List应该是全局变量,不能递归一次new一个
2.因为要求返回TreeNode,所以List中可以直接储存TreeNode,不用保存节点值,省去了最后返回时构建节点
3.这里其实没有必要使用List储存节点,直接设定一个计数器和全局变量,当计数器为k时使用全局变量保存遍历的节点即可
4.中序递归时设定了root == null返回的边界条件,就不需要重复判断左右节点是否为null了哈