蓝桥杯-横向打印二叉树

    xiaoxiao2021-03-25  67

    import java.util.Scanner; class Tree{ private Integer data; private String notes; private Tree lchild; private Tree rchild; public Integer getData() { return data; } public void setData(Integer data) { this.data = data; } public Tree getLchild() { return lchild; } public void setLchild(Tree lchild) { this.lchild = lchild; } public Tree getRchild() { return rchild; } public void setRchild(Tree rchild) { this.rchild = rchild; } public String getNotes() { return notes; } public void setNotes(String notes) { this.notes = notes; } public Tree() { super(); } public Tree(Integer data) { super(); this.data = data; } public void addNode(Tree tree){ if(tree.data < this.data){ if(this.lchild == null) { this.lchild = tree; }else{ this.lchild.addNode(tree); } } else{ if(this.rchild == null) { this.rchild=tree; }else{ this.rchild.addNode(tree); } } } //后序 public void printTree(){ if(rchild!=null) this.rchild.printTree(); System.out.println(this.data); if(lchild!=null) this.lchild.printTree(); } public void addNodeNotes(Tree tree){ if(tree.data < this.data){ if(this.lchild == null) { String notes = this.notes.replaceAll("[0-9]",".").replaceAll("-", ".")+"-"+tree.getData()+"-|"; tree.setNotes(notes); this.lchild = tree; }else{ this.lchild.addNodeNotes(tree); } } else{ if(this.rchild == null){ String notes = this.notes.replaceAll("[0-9]",".").replaceAll("-", ".")+"-"+tree.getData()+"-|"; tree.setNotes(notes); this.rchild=tree; }else{ this.rchild.addNodeNotes(tree); } } } // flag 0:left 1:right //连续两次left,right 连续两次0 or 1,则需要去掉一个"|" public void addNodeNotes(Tree tree,int flag){ if(tree.data < this.data){ if(this.lchild == null) { String notes = this.notes.replaceAll("[0-9]",".").replaceAll("-", ".")+"-"+tree.getData()+"-|"; if(flag == 0){ String s = this.notes.replaceAll("[0-9]",".").replaceAll("-", ".").substring(0,this.notes.length()-1); int index = s.lastIndexOf("|"); notes = s.substring(0, index)+"."+s.substring(index+1, s.length())+"|-"+tree.getData()+"-|"; } tree.setNotes(notes); this.lchild = tree; }else{ this.lchild.addNodeNotes(tree,0); } } else{ if(this.rchild == null){ String notes = this.notes.replaceAll("[0-9]",".").replaceAll("-", ".")+"-"+tree.getData()+"-|"; if(flag == 1){ String s = this.notes.replaceAll("[0-9]",".").replaceAll("-", ".").substring(0,this.notes.length()-1); int index = s.lastIndexOf("|"); notes = s.substring(0, index)+"."+s.substring(index+1, s.length())+"|-"+tree.getData()+"-|"; } tree.setNotes(notes); this.rchild=tree; }else{ this.rchild.addNodeNotes(tree,1); } } } //带注释 //后序 public void printTreeNotes(){ if(rchild!=null){ this.rchild.printTreeNotes(); } if(lchild == null && rchild == null) System.out.println(this.notes.substring(0, this.notes.length()-2)); else System.out.println(this.notes); if(lchild!=null){ this.lchild.printTreeNotes(); } } } public class Main { public static void main(String[] args) { int[] a = new int[100]; String[] ss = new String[100]; Scanner scan=new Scanner(System.in); String s = scan.nextLine(); ss = s.split(" "); for(int i=0;i<ss.length;i++) a[i] = Integer.parseInt(ss[i]); Tree root = new Tree(a[0]); root.setNotes(root.getData()+"-|"); for(int i=1;i<ss.length;i++){ root.addNodeNotes(new Tree(a[i]),-1); } root.printTreeNotes(); } }

    代码

    转载请注明原文地址: https://ju.6miu.com/read-36613.html

    最新回复(0)