CS61B - Tree Map - 二叉树遍历

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从小到大,就是从二叉树最左边的节点开始,依次以左 - 根 - 右的顺序打印每个节点值。这其实被称之为二叉树的中序遍历。

对于每个节点,都有这样一条规律:打印完左子树的所有节点,再打印自身,最后打印右子树。代码的最后三行就是这个意思。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值