这道题目要求只能用java做,涉及到二叉树,C语言需要自己定义可能是过于麻烦了。
import java.util.Scanner;
import java.util.ArrayList;
public class Main{
static TreeNode KthNode(TreeNode pRoot,int k)
{
if(pRoot == null || k <= 0)
return null;
ArrayList<TreeNode> aList = new ArrayList();
inOrderRecursive(pRoot,aList);
int len = aList.size();
if(len < k)
return null;
else
return aList.get(k - 1);
}
static void inOrderRecursive(TreeNode root,ArrayList<TreeNode> a){
if(root == null){
return;
}
inOrderRecursive(root.left,a);
a.add(root);
inOrderRecursive(root.right,a);
}
public static void main(String[] args) {
TreeNode root = new TreeNode(1);
TreeNode node2 = new TreeNode(2);
TreeNode node3 = new TreeNode(3);
TreeNode node4 = new TreeNode(4);
TreeNode node5 = new TreeNode(5);
TreeNode node6 = new TreeNode(6);
TreeNode node7 = new TreeNode(7);
root.left = node2;
root.right = node3;
node2.left = node4;
node2.right = node5;
node3.left = node6;
node3.right = node7;
Scanner sc = new Scanner(System.in);
int k = sc.nextInt();
TreeNode result = KthNode(root,k);
System.out.println(result.val);
}
}