微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何打印到二叉树的每一片叶子的路径?

如何解决如何打印到二叉树的每一片叶子的路径?

在下面的二叉树中,除叶节点外,所有节点均为空。我正在尝试将叶子输出到它旁边的编码表。

This is an example of a tree

对于这种方法,这就是我所拥有的:

     public static void printCodes(MsgTree root,String encoding) {
    if (root.left == null && root.right == null) {
        System.out.println(root.payloadChar + " --is-- " + encoding);
    } else {
        if (root.left != null) {
            encoding += '0';
            printCodes(root.left,encoding);
        } if(root.right!=null) {
            encoding += '1';
            printCodes(root.right,encoding);
        }
    }
}

但是,这是我得到的输出


a --is-- 0

! -是-0100

d-是-010010

c-是-0100101

r-是-01010

b-是-010101


所以我认为我的问题与多余的0有关,如何解决

解决方法

代码正在突变encoding,因此,如果有两个子代,则转到左侧节点将保留0

例如,您可以将encoding保持不变:

public static void printCodes(MsgTree root,String encoding) {
    if (root.left == null && root.right == null) {
        System.out.println(root.payloadChar + " --is-- " + encoding);
    } else {
        if (root.left != null) {
            printCodes(root.left,encoding + '0');
        } if (root.right!=null) {
            printCodes(root.right,encoding + '1');
        }
    }
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。