Tree Map
来自CS61B 19Spring的lab 7。Lab 7: TreeMap
要求以二叉树为核心数据结构,构造一个Map。也就是自己建一个nest class二叉树节点类。
put, get, containKey方法不用说,常见的二叉树递归。就说一下额外建的一个printInOrder()
方法,按照key从小到大的顺序输出,有一种非常漂亮的递归实现方式。直接上代码。
/* Print BSTMap in order of increasing key. */
private void printInOrder(BSTNode n) {
if (n == null) {
return;
}
printInOrder(n.left);
System.out.println("key: " + n.key + " value: " + n.value);
printInOrder(n.right);
}
public void printInOrder() {
printInOrder(root);
}
递归的代码简直太美了。
讲解一下:二叉树Map是以key的大小为标准,按照二叉树的规则构建。所以推导一下,key从小到大,就是从二叉树最左边的节点开始,依次以左 - 根 - 右的顺序打印每个节点值。这其实被称之为二叉树的中序遍历。
对于每个节点,都有这样一条规律:打印完左子树的所有节点,再打印自身,最后打印右子树。代码的最后三行就是这个意思。