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了哈
点赞 3

相关推荐

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