Nowcoder java-二叉搜索树的第k个结点
(题目来自牛客网)
思路
二叉搜索树按照中序遍历的顺序打印出来正好就是排序好的顺序。
所以,按照中序遍历顺序找到第k个结点即可。
代码
import java.util.Stack;
public class KthNode {//非递归
TreeNode kthNode(TreeNode pRoot, int k) {//搜索二叉树中序遍历就是按照从小到大的顺序排列
Stack<TreeNode> stack = new Stack<TreeNode>();
int index = 0;
if (pRoot == null || k == 0) return null;
while (pRoot != null || !stack.empty()) {
while (pRoot != null) {
stack.push(pRoot);
pRoot = pRoot.left;
}
if (!stack.empty()) {
pRoot = stack.pop();
index++;
if (index == k) return pRoot;
pRoot = pRoot.right;
}
}
return null;
}
}