-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathKthNode.java
More file actions
68 lines (56 loc) · 1.72 KB
/
KthNode.java
File metadata and controls
68 lines (56 loc) · 1.72 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
package com.company;
import org.junit.Test;
import java.util.ArrayList;
import java.util.List;
public class KthNode {
public class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode(int val) {
this.val = val;
}
}
/**
* 给定一棵二叉搜索树,请找出其中的第k小的结点。
* 例如 5,3,7,2,4,6,8 中,
* 按结点数值大小顺序第三小结点的值为4。
*/
List<TreeNode> mList = new ArrayList<>();
TreeNode KthNode(TreeNode pRoot, int k) {
// 先序遍历找到二叉搜索树增序数列
preNode(pRoot);
for (int i = 1; i <= mList.size(); i++) {
if (i == k)
return mList.get(i - 1);
}
return null;
}
public void preNode(TreeNode pRoot) {
if (pRoot == null) return;
if (pRoot.left != null)
preNode(pRoot.left);
mList.add(pRoot);
if (pRoot.right != null)
preNode(pRoot.right);
}
@Test
public void test() {
//8,6,10,5,7,9,11
TreeNode pRoot = new TreeNode(8);
TreeNode node6 = new TreeNode(6);
TreeNode node10 = new TreeNode(10);
TreeNode node5 = new TreeNode(5);
TreeNode node7 = new TreeNode(7);
TreeNode node9 = new TreeNode(9);
TreeNode node11 = new TreeNode(11);
pRoot.left = node6;
pRoot.right = node10;
node6.left = node5;
node6.right = node7;
node10.left = node9;
node10.right = node11;
TreeNode treeNode = KthNode(pRoot, 1);
System.out.println(treeNode.val);
}
}