在Java中,你可以通過實現Comparable
接口或提供一個Comparator
來實現對樹節點的排序。下面是兩種方法的示例:
方法1:實現Comparable
接口
class TreeNode implements Comparable<TreeNode> {
int val;
TreeNode left;
TreeNode right;
TreeNode(int x) {
val = x;
}
@Override
public int compareTo(TreeNode other) {
return Integer.compare(this.val, other.val);
}
}
在這個例子中,TreeNode
類實現了Comparable
接口,并重寫了compareTo
方法。這樣,當你將TreeNode
對象添加到TreeSet
或TreeMap
等集合時,它們會自動根據值進行排序。
方法2:提供一個Comparator
import java.util.Comparator;
class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode(int x) {
val = x;
}
}
class TreeNodeComparator implements Comparator<TreeNode> {
@Override
public int compare(TreeNode node1, TreeNode node2) {
return Integer.compare(node1.val, node2.val);
}
}
在這個例子中,我們創建了一個名為TreeNodeComparator
的類,它實現了Comparator
接口,并重寫了compare
方法。然后,你可以使用這個比較器對TreeNode
對象進行排序,例如:
List<TreeNode> nodes = new ArrayList<>();
nodes.add(new TreeNode(3));
nodes.add(new TreeNode(1));
nodes.add(new TreeNode(2));
Collections.sort(nodes, new TreeNodeComparator());
這將根據節點的值對nodes
列表進行排序。